VBA

Résolu/Fermé
rimoa Messages postés 149 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 18 octobre 2024 - Modifié le 8 janv. 2022 à 11:03
rimoa Messages postés 149 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 18 octobre 2024 - 11 janv. 2022 à 19:55
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

f894009 Messages postés 17241 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 février 2025 1 713
Modifié le 8 janv. 2022 à 11:14
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
NHenry Messages postés 15192 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 18 février 2025 353
8 janv. 2022 à 13:17
En effet, faute de frappe, pense à mettre "Option Explicit" en haut de ton module de code, ça limitera ce genre de soucis.
1
Merci à vous deux ça fonctionne avec un code beaucoup bien réduit :-)
merci aussi pour l'idée de Option Explicit
0
NHenry Messages postés 15192 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 18 février 2025 353 > rimoa
11 janv. 2022 à 19:42
Si le problème est résolu, pense à le "marquer comme résolu" (gros bouton vert)
1
rimoa Messages postés 149 Date d'inscription samedi 9 février 2013 Statut Membre Dernière intervention 18 octobre 2024 1
11 janv. 2022 à 19:55
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