Copier 2 feuilles dans une 3ème feuille

Résolu
Mischoupi -  
Morgothal Messages postés 1350 Statut Membre -
Bonjour,

Voici ma problématique. J'ai 2 onglets (Calcul 5) et (Calcul 6), qui ont exactement la même structure mais pas le même nombre de lignes. Je souhaite copier ces 2 onglets les un à la suite des autres dans un autre onglet (final). Voici le code que j'ai réalisé, malheureusement, mon premier copier/coller est écrasé par le second. Pouvez-vous m'aider?
Voici le code

Private Sub CommandButton4_Click()
Sheets("Calcul 5").Activate
ActiveSheet.Range("A1:F60000").Copy

With Sheets("Final")

.Range("A1:F60000").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

End With
Sheets("Calcul 6").Activate
ActiveSheet.Range("A1:F60000").Copy
With Sheets("Final")

.Range("A1:F60000").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

End With

End Sub

Un grand merci par avance

3 réponses

  1. Morgothal Messages postés 1350 Statut Membre 184
     
    Salut,
    Tu colles tes 2 zones au même endroit, c'est normal que la deuxième écrase la première...

    Il faudrait compter le nombre de lignes à copier dans Calcul5, sélectionner/copier/coller dans final, idem dans Calcul6, et coller sous Calcul5 dans final (avec le nombre de lignes de Calcul5 c'est possible).

    Si tu as d'autres questions n'hésites pas à poster.

    A+
    0
    1. mischoupi
       
      Oui mais je débute sous vba et je ne vois pas comment faire.
      0
  2. Morgothal Messages postés 1350 Statut Membre 184
     
    Voilà :
    Je sais pas si c'est très optimisé mais ça a le mérite de fonctionner :
    Sub copie()  
    Dim ligne1, ligne2 As Integer  
    
    ligne1 = Sheets("Calcul5").Range("A65536").End(xlUp).Row  
    ligne2 = Sheets("Calcul6").Range("A65536").End(xlUp).Row  
    
    Sheets("Calcul5").Range("A1:A" & ligne1).Copy  
    Sheets("final").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
    
    Sheets("Calcul6").Range("A1:A" & ligne2).Copy  
    Sheets("final").Range("A" & ligne1 + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False  
    
    End Sub
    Attention, les zones de copie (en gras) ne font qu'une colonne pour moi, à adapter pour toi.

    A+
    0
    1. mischoupi
       
      Merci Morgothal, Mais malheureusement j'ai une erreur d'execution '9', l'indice n'appartient pas à la selection. Quand je debug, cette ligne de code se met en jaune : ligne1 = Sheets("Calcul5").Range("A65536").End(xlUp).Row

      Peux tu encore m'éclaircir

      Merci
      0
    2. mischoupi
       
      Je viens de trouver mon erreur. Ca marche parfaitement! Un énorme merci
      0
    3. Morgothal Messages postés 1350 Statut Membre 184
       
      Pas de soucis, n'oublie pas de mettre le sujet en résolu ;)
      0
    4. mischoupi
       
      ou est ce que je mets sujet résolu?
      0
    5. Morgothal Messages postés 1350 Statut Membre 184
       
      Euh tout en haut je crois
      0
  3. thierry
     
    débrouilles toi
    -1
    1. mischoupi
       
      Merci!!!
      0