Copier coller de données par macro

Bonjour le forum,

J'ai des données dans la feuille 1 et dans la feuille 2 qui sont concentrées dans une seule colonne. J'aimerais copier les données de la feuille 1 et les coller dans la feuille 3. Puis copier les données de la feuille 2 et les coller à la suite des données de la feuille 1 dans la feuille 3. Ceci en utilisant une macro si possible. J'ajoute pour info que le nombre de données dans les feuille 1 et 2 est variable. J'espére avoir été clair, j'ai mis en pj un exemple avec lequel vous comprendrez un peu mieux je pense. Merci d'avance pour vos réponses.

45testcopie.xls (13.50 Ko)

Bonjour rugnum,

alors voilà une proposition pour une solution très générale :

Dim Feuil1, Feuil2, Feuil3 As String
Feuil1 = "Feuil1"
Feuil2 = "Feuil2"
Feuil3 = "Feuil3"

Dim x, y As Long
x = Worksheets(Feuil1).Range("A1").End(xlDown).Row
y = Worksheets(Feuil1).Range("A1").End(xlToRight).Column

Sheets(Feuil1).Range(x, y).Copy
Sheets(Feuil3).Paste Destination:=Sheets(Feuil3).Cells(1, 1)

x = Worksheets(Feuil2).Range("A1").End(xlDown).Row
y = Worksheets(Feuil2).Range("A1").End(xlToRight).Column

Dim Dest2 As Range

Dest2 = Cells(1, Sheets(Feuil3).Cells(1, 1).End(xlToRight).Column + 1)
Sheets(Feuil2).Range(x, y).Copy
Sheets(Feuil3).Paste Destination:=Dest2

Tu n'as plus qu'à paramétrer tes noms de feuilles et ça devrait rouler!

Bonjour Reuk, une erreur 400 apparaît lorsque je met ton programme en application. As tu une solution a cela? Merci.

Il te dit sur quelle ligne?

Parce que là comme ça, je sais pas ce que ça veut dire la 400...

Je regarde de mon côté aussi!

Il ne me donne pas de ligne, une erreur 400 apparaît lorque je clique sur le bouton auquel j'ai associé la macro. Quand je met en route la macro, il m'affiche "erreur définie par l'application ou par l'objet". Je ne vois pas où est le pbm..

Ehh au passage, tu veux les coller dans la même colonne à la suite?

t'as toujours qu'une colonne? (ça ne changera rien au code ça remarque...)

Une v2 à tester :

Dim Feuil1, Feuil2, Feuil3 As String
Feuil1 = "Feuil1"
Feuil2 = "Feuil2"
Feuil3 = "Feuil3"

Dim x, y As Long
x = Worksheets(Feuil1).Range("A1").End(xlDown).Row
y = Worksheets(Feuil1).Range("CA1").End(xlToLeft).Column

Sheets(Feuil1).Range(Cells(1, 1), Cells(x, y)).Copy 'correction ici!
Sheets(Feuil3).Paste Destination:=Sheets(Feuil3).Cells(1, 1)

x = Worksheets(Feuil2).Range("A1").End(xlDown).Row
y = Worksheets(Feuil2).Range("A1").End(xlToRight).Column

Dim Dest2 As Range

Dest2 = Cells(1, Sheets(Feuil3).Cells(1, 1).End(xlDown).Row + 1) 'changement ici pour mettre en dessous au lieu d'à droite dans la précédente
Sheets(Feuil2).Range(Cells(1, 1), Cells(x, y)).Copy 'correction ici!
Sheets(Feuil3).Paste Destination:=Dest2

Sur ton fichier, c'est pareil, j'ai une erreur mais je vois pas trop d'où ça vient...

Sheets(Feuil1).Range(Cells(1, 1), Cells(x, y)).Copy

Sur cette ligne, qui me paraît tout ce qu'il y a de plus raisonnable...

Oui je veux les coller dans la même colonne à la suite dans la feuille 3. Je viens de tester la v2, sa ne marche toujours pas,cette erreur 400 apparaît encore.

v3, il reste que le range du deuxième coller qui veut absolument pas fonctionner :

(j'ai corrigé les autres erreurs "bêtes" que j'avais laissé trainer )

Dim Feuil1, Feuil2, Feuil3 As String
Feuil1 = "Feuil1"
Feuil2 = "Feuil2"
Feuil3 = "Feuil3"

Dim x, y As Long
x = Worksheets(Feuil1).Range("A1").End(xlDown).Row
y = Worksheets(Feuil1).Range("DA1").End(xlToLeft).Column'correction

Range(Sheets(Feuil1).Cells(1, 1), Sheets(Feuil1).Cells(x, y)).Copy 'correction ici!
Sheets(Feuil3).Paste Destination:=Sheets(Feuil3).Cells(1, 1)
Msgbox "1ere copie faite"

x = Worksheets(Feuil2).Range("A1").End(xlDown).Row
y = Worksheets(Feuil2).Range("DA1").End(xlToLeft).Column'correction

Dim Dest2 As Range
Dim LineR As Long

LineR = Sheets(Feuil3).Cells(1, 1).End(xlDown).Row + 1
Dest2 = Range(Sheets(Feuil3).Cells(1, LineR), Sheets(Feuil3).Cells(y, LineR + x - 1))
 'c'est la définition d'un Range "dynamique" qui pose problème je pense mais j'ai pas encore trouvé la syntaxe (pas trop bourrine) solution!

Range(Sheets(Feuil2).Cells(1, 1), Sheets(Feuil2).Cells(x, y)).Copy 'correction ici!
Sheets(Feuil3).Paste Destination:=Dest2

C'est cette ligne là qui se laisse pas faire.... Et j'ai pas trop d'idées de pourquoi.... J'ai essayé quelques possibilités déjà....

Dest2 = Range(Sheets(Feuil3).Cells(1, LineR), Sheets(Feuil3).Cells(y, LineR + x - 1))

Je viens de trouver une autre méthode qui marche, si sa t'intéresse:

Private Sub CommandButton1_Click()

For Each cel In Sheets("Feuil1").Range("A:A").SpecialCells(xlCellTypeConstants)

lg = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row + 1

Sheets("Feuil3").Range("A" & lg) = cel.Value

Next

For Each cel In Sheets("Feuil2").Range("A:A").SpecialCells(xlCellTypeConstants)

lg = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row + 1

Sheets("Feuil3").Range("A" & lg) = cel.Value

Next

End Sub

Merci pour ton aide. A plus peut être.

Rechercher des sujets similaires à "copier coller donnees macro"