Macro VBA_ boucle pour macro "copier-coller"_NEXT FOR

Bonjour à tous,

Je viens de débuter dans les macros VBA et je cherche à automatiser un copier-coller pour constituer un tableau récap dans lequel pourraient naviguer facilement mes collègues.

Je cherche à créer une macro qui effectuera la tache suivante:

A partir d'un dossier qui regroupera plusieurs fichiers nommés "MissMond1.xls", "MissMond2", 3 (etc...), il faudrait que ma macro recopie la ligne 2 (ou la plage "A2 : D2") de l'onglet "feuil2" de chacun des fichiers "MissMond" du répertoire et qu'il les aligne dans l'onglet "feuil1" d'un fichier "recap"

La ligne2 de l'onglet feuil2 du fichier MissMond1 devra se retrouver dans l'onglet 1 du fichier Récap, en ligne 2

La ligne2 de l'onglet feuil2 du fichier MissMond2 devra se retrouver dans l'onglet 1 du fichier Récap, en ligne 3

La ligne2 de l'onglet feuil2 du fichier MissMond3 devra se retrouver dans l'onglet 1 du fichier Récap ,en ligne 4

La ligne2 de l'onglet feuil2 du fichier MissMond4 devra se retrouver dans l'onglet 1 du fichier Récap, en ligne 5

et ainsi de suite...

J'ai réussi à obtenir le résultat que je voulais avec la macro ci-dessous, mais le seul pbme, c'est qu'elle ne copie qu'une seule ligne (celle du premier fichier)!!

Il faut sûrement que j'utilise une boucle mais je n'arrive pas à savoir laquelle..."FOR"? "NEXT FOR"?

Voilà ma macro:

Sub Test1()

Dim Wb As Workbook
Workbooks.Open "C:\Macro_test\DdeMissMond1.xls"

    Workbooks("DdeMissMond1.xls").Activate
    Worksheets("feuil2").Activate
    ActiveWindow.WindowState = xlNormal
    Range("A2:D2").Select
    Selection.Copy
    Windows("Recap.xlsm").Activate
    Range("A2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Workbooks("DdeMissMond1.xls").Close
End Sub

Pouvez-vous me dire ce que vous en pensez et me donner des pistes pour avancer rapidement svp?

Dsl du derangement...j'espère que vous pourrez m'aider, je devrais avoir abouti d'ici mercredi... :/

(j'ai une réunion jeudi)

Bien cdlt

Bonsoir

Il faudrait savoir où le fichier Recap se trouve. Sinon sans avoir testé un exemple à essayer

Sub test1()
Dim Chemin As String
Dim rep As String
Dim nbfichier As byte
Chemin = "C:\Macro_test" 'a adapter
rep = Dir(Chemin & "*.xls")
nbfichier = 1
fichier = "DdeMissmond" & nbfichier & ".xls"
While Not rep = ""
    Workbooks.Open Chemin & fichier
    Activeworbook.Sheets("feuil2").Range("A2:D2").Copy
    Thisworbook.Sheets("feuil1").Range("A2").PasteSpecial Paste:=xlPasteValues
    Workbooks(fichier).Close
    nbfichier = nbfichier + 1
    rep = Dir
Wend
End Sub

Cordialement

Bonsoir Dan,

Le fichier récap se trouvait au même endroit que les fichiers source "MissMond" mais...j'avais envisagé de déplacer "récap" dans un autre dossier.

J'ai essayé 2 méthodes:

  • lancer ta macro en déplaçant mon fichier "Recap" sur le bureau
  • lancer ta macro en laissant le fichier "Recap"en le laissant dans le dossier "C:\Macro_test".

Mais désolée, sauf ton respect, le résultat a été un "bide" total, pour Excel... Excel ne me fait aucun message d'erreur, excel ne réagit pas...il ne se passe strictement rien. Electro-encéphalogramme plat, quoi!!

Même l'action que j'avais réussi à programmer (ouverture du fichier MissMond1 et inscription de la ligne contenue dans ce fichier dans le fichier "recap", puis fermeture du fichier MissMond1) ne se produit pas...!

J'avoue que je ne m'attendais pas à cette absence de réaction d'Excel...J'aimerais savoir ce qui m'a manqué pour empêcher que la macro se lance...(aurais-je fait une fausse manip dans mon recopie de macro...)

Sinon, j'ai trouvé une solution qui marche parfaitement, avec l'aide d'un autre bienfaiteur (mais sans l'usage de la boucle "NEXT FOR"). Je la partage ci-dessous!


Sub Test1()
Const chemin$ = "C:\Macro_test\"
Dim fichier As String
Dim rng As Range
  Set rng = ThisWorkbook.Worksheets(1).Range("A2:D2")
  rng.Resize(1000).ClearContents  'Adapter au nombre max de fichiers
  fichier = Dir(chemin & "DdeMissMond*.xls")
  Application.ScreenUpdating = False
  Do While Len(fichier) > 0
    With Workbooks.Open(chemin & fichier)
      rng.Value = .Worksheets("Feuil2").Range("A2:D2").Value
      Set rng = rng.Offset(1)
      .Close
      fichier = Dir
    End With
  Loop
  Application.ScreenUpdating = True
End Sub

Cette formule marche parfaitement (en laissant le fichier recap dans le même dossier que les fichiers missmond, c'est-à-dire le dossier "C:\Macro_test\")!!

Rechercher des sujets similaires à "macro vba boucle copier coller next"