J'essaye de faire un AutoFill
de la dernière ligne à une ligne ci-dessous. Donc LastRow
à LastRow Offset (1)
.
Je sais comment trouver la dernière ligne dans VBA, mais je ne trouve pas comment résoudre ce problème puzzle.
Je pense que cela ressemblera à quelque chose comme ceci:
LastRow = Cells(Rows.Count, 2).End(xlUp).Row LastRow2 = Cells(Rows.Count, 2).End(xlUp).Offset(1) Range("B" & LastRow : "AA" & LastRow).Select Range("B" & LastRow2 : "AA" & LastRow2).Autofill
Si quelque chose n'est pas clair, veuillez demander, j'apprécierais toute aide p >
3 Réponses :
Ajoutez .Row
à la fin de votre variable LastRow2
:
LastRow2 = Cells(Rows.Count, 2).End(xlUp).Offset(1).Row
Salut Mehmet, merci pour la réponse. Et vous avez probablement raison. Mon problème réside cependant avec - Range ("B" & LastRow: "AA" & LastRow) .Select - VBA ne reconnaît pas cette commande.
Vous pouvez vous référer à la réponse ci-dessous pour cela et essayer d'éviter de sélectionner autant que vous le pouvez chez vba.
@Peter vous avez corrigé votre code comme ceci - >> Range ("B" & LastRow & ": AA" & LastRow) .Sélectionnez
Ajoutez .Row
à la fin de votre variable LastRow2
et utilisez la Méthode Range.AutoFill correctement:
Dim SourceRange As Range Set SourceRange = Cells(Rows.Count, 2).End(xlUp).Resize(1, 26) 'results in column B to AA SourceRange.AutoFill Destination:=SourceRange.Resize(RowSize:=2) '1 down
où le DestinationRange
doit inclure le SourceRange
.
Je recommande vivement de éviter d'utiliser Select .
Dim LastCell As Range Set LastCell = Cells(Rows.Count, 2).End(xlUp) 'without .Row LastCell.Resize(1, 26).AutoFill Destination:=LastCell.Resize(2, 26) '1 down
Alternative:
LastRow = Cells(Rows.Count, 2).End(xlUp).Row Range("B" & LastRow : "AA" & LastRow).Autofill Destination:=Range("B" & LastRow : "AA" & LastRow + 1) '^ Note this must be LastRow not LastRow + 1!
Alternative:
SourceRange.Autofill Destination:=DestinationRange
Salut Peh, j'obtiens une erreur d'exécution (424) indiquant "Objet requis"
@Peter corrigé en LastCell.Resize (1, 26) .AutoFill Destination: = LastCell.Resize (1, 26) .Offset (1)
voir ma réponse modifiée
Il est maintenant dit "La méthode AutoFill de la classe Range a échoué". Cette erreur se produit sur la dernière ligne de code.
@Peter Désolé mon mauvais, évidemment la plage de destination doit inclure la plage source. Voir ma réponse modifiée. Devrait fonctionner maintenant, testé.
La plage de destination de la saisie automatique peut être déclarée comme ceci.
With ActiveSheet Set Rng = .Cells(.Rows.Count, "B").End(xlUp).Resize(2, 26) End With
êtes-vous sûr? La documentation indique le paramètre de destination dans La saisie automatique
est obligatoire et non facultative.
Cela ne semble pas fonctionner, j'obtiens une erreur d'exécution disant - "Argument non facultatif"
@PEH Non, je ne suis pas sûr. C'est pourquoi j'ai dit "devrait fonctionner". Peter, désolé pour ça. Je pensais que vous saviez comment faire la partie AutoFill. J'essayais juste de montrer comment définir la plage. Je m'attendrais à devoir spécifier ce qu'il faut remplir automatiquement. Êtes-vous sûr que votre intention est de remplir automatiquement? Il semble que vous souhaitiez peut-être ajouter une ligne à la fin de votre tableau qui hérite du format de la dernière ligne utilisée. Cela ne serait pas fait en utilisant la saisie automatique. Utilisez l'enregistreur de macros pour savoir comment coder cela.
LastRow2
n'est-il pas seulementLastRow + 1
?