J'ai un peu de difficulté avec un sous-programme VBA qui prend les informations saisies sur la première feuille d'un classeur Excel - "Entrée", et les colle dans une feuille séparée dans le même classeur - "Base de données". Ce dont j'ai besoin, c'est que les données soient ajoutées à la rangée vide suivante de la base de données. J'apprécie que ce soit une question assez commune, mais j'ai regardé Google pour la meilleure partie de ce matin et ne peux pas tout à fait l'obtenir! Le code que je suis parvenu à ce jour copiera les données, mais toujours remplacer la première ligne:Copie Excel VBA à ligne vide
Sub CopyDataToDatabase()
Application.ScreenUpdating = False
Dim r As Range
Set r = Sheets("Entry").Range("B6:M6")
For Each cell In r
If IsEmpty(cell) Then
MsgBox ("Error - all boxes must be filled in!")
Cancel = True
Exit Sub
Exit For
End If
Next
Dim NextRow As Range
Set NextRow = Sheets("Database").Range("A2:L2").End(xlUp).Offset(1, 0)
' Set NextRow = Sheets("Database").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Entry").Range("B6:M6").Copy
NextRow.PasteSpecial (xlValues)
MsgBox ("Data added successfully!")
Sheets("Entry").Range("B6:M6").ClearContents
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Le commentaire de Set NextRow est l'autre méthode que j'ai essayé, qui ne fonctionne pas (erreur était « objet Champs obligatoires').
Toute aide reçue avec gratitude, d'autant plus si vous pouviez l'expliquer - comme je suis un peu nouveau à VBA!
Merci d'avance.
Je recommande d'avoir un regard sur ce lien http://stackoverflow.com/questions/11169445/error-finding-last-used-cell-in-vba Pour trouver la dernière cellule Col A utilisez la méthode spécifiée par @ChrisNeilson ci-dessous. Mais s'il y a une possibilité que la colonne Col A Last ne soit pas la même que Col B - Col L alors utilisez la méthode '.Find' pour trouver la dernière cellule et ensuite utilisez-la pour créer votre range. –