Copier coller à la suite VBA
Stevou
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis un novice sur VBA, donc j'ai quelques souci pour un code.
Mon code est ts simple:
En cliquant sur un bouton de commande, la macro doit copier coller une plage sur une feuille, doit aller sur une autre feuille. A partir de la, elle doit chercher la premiere cellule non vide (en partant du bas), et coller la selection.
Voici mon code:
Sub bouton()
Dim WB_Principal As Workbook
Set WB_Principal = ActiveWorkbook
Sheets("Macro1").Range("J20:K24").Copy
Workbooks("Machin.xlsx").Activate
Sheets("col").Activate
Do Until Not IsEmpty((ActiveCell))
Range("A65536").Offset(1, 0).End(xlUp).Select
Selection.Paste
Loop
WB_Principal.Activate
End Sub
A partir de cette ligne: Range("A65536").Offset(1, 0).End(xlUp).Select
j'ai l'erreur 1004 "erreur définie par l'application ou par l'objet"
Donc j'aimerai bien savoir pq j'ai cette erreur et par la suite avoir si possible une solution.
Merci de votre aide
Stevou
je suis un novice sur VBA, donc j'ai quelques souci pour un code.
Mon code est ts simple:
En cliquant sur un bouton de commande, la macro doit copier coller une plage sur une feuille, doit aller sur une autre feuille. A partir de la, elle doit chercher la premiere cellule non vide (en partant du bas), et coller la selection.
Voici mon code:
Sub bouton()
Dim WB_Principal As Workbook
Set WB_Principal = ActiveWorkbook
Sheets("Macro1").Range("J20:K24").Copy
Workbooks("Machin.xlsx").Activate
Sheets("col").Activate
Do Until Not IsEmpty((ActiveCell))
Range("A65536").Offset(1, 0).End(xlUp).Select
Selection.Paste
Loop
WB_Principal.Activate
End Sub
A partir de cette ligne: Range("A65536").Offset(1, 0).End(xlUp).Select
j'ai l'erreur 1004 "erreur définie par l'application ou par l'objet"
Donc j'aimerai bien savoir pq j'ai cette erreur et par la suite avoir si possible une solution.
Merci de votre aide
Stevou
A voir également:
- Macro copier coller à la suite
- Historique copier coller - Guide
- Style d'écriture a copier coller - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
1 réponse
Range("A65536").Offset(1, 0).End(xlUp).Select
C'est comme
Range("A65537").End(xlUp).Select
c'est une cause d'erreur sur un fichier .xls (mais pas sur un xlsx), il faudrait écrire :
Range("A65536").End(xlUp).Offset(1, 0).Select
et pour un xlsx :
Range("A1048576").End(xlUp).Offset(1, 0).Select
plus universel :
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
Je préfère utiliser un objet Range :
Dim rng As Range
Set rng = ActiveSheet.Columns("A").Find("*", , , , , xlPrevious)
If Not rng Is Nothing Then
Set rng = rng.Offset(1, 0)
' ....
End If
Cordialement
Patrice
C'est comme
Range("A65537").End(xlUp).Select
c'est une cause d'erreur sur un fichier .xls (mais pas sur un xlsx), il faudrait écrire :
Range("A65536").End(xlUp).Offset(1, 0).Select
et pour un xlsx :
Range("A1048576").End(xlUp).Offset(1, 0).Select
plus universel :
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
Je préfère utiliser un objet Range :
Dim rng As Range
Set rng = ActiveSheet.Columns("A").Find("*", , , , , xlPrevious)
If Not rng Is Nothing Then
Set rng = rng.Offset(1, 0)
' ....
End If
Cordialement
Patrice
la boucle Do Until bla bla semble également inutile...
A supprimer!
Je suis entièrement d'accord avec toi.
Je dirais même qu' il faudrait tout ré-écrire en utilisant des objets pour pour désigner l'origine et la cible sans ambigüité et éviter les Select et Activate inutiles.