VBA

Résolu
rimoa Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
rimoa Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, merci de votre aide. Je vous en serai reconnaissante si vous pouvez trouver mon erreur sans que je vous envoie le fichier par confidentialité. je copie ici juste la partie des boucles.
j'ai 4 feuilles, j'essaye de faire une macro pour consolider les trois tables dans la feuille 'Comb' mais la boucle copie une seule table et s'arrête sans message d'erreur.

For j = 1 To 3 'parcours feuilles

  Sheets(j).Select
  dereniereligne = Range("A1000000").End(xlUp).Row

    For i = 2 To DerniereLigne 'parcours lignes chaque table
        Sheets(j).Select
        Rows(i).Select
        Selection.Copy
        Sheets("Comb").Select
        LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1
        Cells(LastRowConsolidation, 1).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False       

    Next i

Next j

Application.ScreenUpdating = True
MsgBox "Consolidation terminée", vbOKOnly + vbInformation, "information"


End Sub

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    dereniereligne= Range("A1000000").End(xlUp).Row
    et
    For i = 2 To DerniereLigne 'parcours lignes chaque table

    La y a un probleme de nom de variable et c'est pas le d majuscule
    Vous dites que ca copie une seule table, ben pas possible copie rien

    Maintenant, il faut eviter les select et autant que possible les boucles sur ligne quand il y a moyen de faire autrement

    Une facon de faire:
    Sub test()
        Application.ScreenUpdating = False
        For j = 1 To 3 'parcours feuilles
            dereniereLigne = Sheets(j).Range("A" & Rows.Count).End(xlUp).Row
            With Sheets("Comb")
                LastRowConsolidation = .Range("A" & .Rows.Count).End(xlUp).Row + 1
                Sheets(j).Rows("2:" & dereniereLigne).Copy .Cells(LastRowConsolidation, 1)
            End With
        Next j
        Application.ScreenUpdating = True
        MsgBox "Consolidation terminée", vbOKOnly + vbInformation, "information"
    End Sub
    1
    1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
       
      En effet, faute de frappe, pense à mettre "Option Explicit" en haut de ton module de code, ça limitera ce genre de soucis.
      1
    2. rimoa
       
      Merci à vous deux ça fonctionne avec un code beaucoup bien réduit :-)
      merci aussi pour l'idée de Option Explicit
      0
      1. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387 > rimoa
         
        Si le problème est résolu, pense à le "marquer comme résolu" (gros bouton vert)
        1
  2. rimoa Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   1
     
    sorry j avais oubliè de cliquer rèsolu. c esr fait.
    juste une petite note que j avais manquee dans mes repinses. Oui mon code erronè copiait ètrangement une seuille feuille dans le combinè. oui ça ne devait pas fonctionner du tout mais bon je voulais juste ajouter cette precision.
    0