Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier coller de données par macro

ascarter

XLDnaute Junior
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.
 

Pièces jointes

  • Testcopie.xls
    13.5 KB · Affichages: 38
  • Testcopie.xls
    13.5 KB · Affichages: 40
  • Testcopie.xls
    13.5 KB · Affichages: 40

Papou-net

XLDnaute Barbatruc
Re : Copier coller de données par macro

Bonjour ascarter,

Voici ton fichier avec une macro de démo attachée au bouton Copier.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Copie de Testcopie.xls
    37 KB · Affichages: 47

ascarter

XLDnaute Junior
Re : Copier coller de données par macro

Sa a l'air de marcher, merci beaucoup. Par contre y-a t-il un autre moyen de désigner les feuille où l'on va chercher les données et où on les colle? Merci.
 

Papou-net

XLDnaute Barbatruc
Re : Copier coller de données par macro

RE

Voici une autre façon, entre autres, de désigner les feuilles :

Code:
Private Sub CommandButton1_Click()
For Each sh In Worksheets
  If Not sh Is Feuil3 Then
    For Each cel In sh.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 If
Next
End Sub
On pourrait tout aussi bien utiliser le nom en clair des onglets :

Code:
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
Mais, à mon avis, la solution initiale présente les avantages suivants :

- En cas de changement de nom des onglets, pas besoin de réécrire le code

- Ajout ou retrait de feuilles sans incidences sur le code également, à condition toutefois que la feuille cible reste toujours en dernière position

Voilà, en espérant avoir répondu à tes interrogations.

Cordialement.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…