Copier coller de données par macro

  • Initiateur de la discussion Initiateur de la discussion ascarter
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

ascarter

Guest
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

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.
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
488
Retour