Sub Macro3()
Dim CO As Workbook 'décalre la variable CO (Classeur d'Origine)
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim DS(1 To 5) As String 'déclare la variable DS (DossierS)
Dim D As Byte 'déclare la variable D (Dossier)
Dim NBO As Byte 'déclare la variable NBO (NomBre d'Onglets)
Dim CA As Workbook 'déclare la variable CA (Classeur Agrégation)
Dim F As String 'déclare la variable F (Fichier)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destnation)
Dim DEST As Range 'déclare la variable DEST (cellule de destination)
Set CO = ThisWorkbook 'définit la classeur d'Origine
CH = CO.Path & "\" 'définit le chemin d'accès CH
DS(1) = "C:\Users\Mado\blabla1\blabla2\dossier1\" 'définit la dossier DS(1) [à adapter !]
DS(2) = "C:\Users\Mado\blabla1\blabla2\dossier2\" 'définit la dossier DS(2) [à adapter !]
DS(3) = "C:\Users\Mado\blabla1\blabla2\dossier3\" 'définit la dossier DS(3) [à adapter !]
DS(4) = "C:\Users\Mado\blabla1\blabla2\dossier4\" 'définit la dossier DS(4) [à adapter !]
DS(5) = "C:\Users\Mado\blabla1\blabla2\dossier5\" 'définit la dossier DS(5) [à adapter !]
For D = 1 To 5 'boucle sur les 5 dossiers D
Select Case D 'agit en fonction du dossier
Case 1 'dossier 1
NBO = 8 'définit le nombre d'onglets
Application.SheetsInNewWorkbook = NBO 'définit le nombre d'onglets à la création d'un nouveau classeur
Case 2 'dossier 2
NBO = 11 'définit le nombre d'onglets
Application.SheetsInNewWorkbook = NBO 'définit le nombre d'onglets à la création d'un nouveau classeur
Case 3, 4 'dossiers 3 et 4
NBO = 6 'définit le nombre d'onglets
Application.SheetsInNewWorkbook = NBO 'définit le nombre d'onglets à la création d'un nouveau classeur
Case 5 'dossier 5
NBO = 18 'définit le nombre d'onglets
Application.SheetsInNewWorkbook = NBO 'définit le nombre d'onglets à la création d'un nouveau classeur
End Select 'fin de l'action en fonction du dossier
Workbooks.Add 'ajoute un mouveau classeur vierge
'enregistre le nouveau classeur dans le même dossier que le classeur d'origine CO avec
'comme nom ""Agreg_Dossier_D.xls" ou "D" est le numéro de dossier de la boucle [extension à adapter !]
ActiveWorkbook.SaveAs (CH & "Agreg_Dossier_" & D & ".xls")
Set CA = ActiveWorkbook 'définit le classer des agrégations CA
F = Dir(DS(D) & "*.xls") 'définit le premier fichier du dossier DS(D) [extension a adapter !]
Do While F <> "" 'exécute en boucle tant qu'il existe des fichiers
Workbooks.Open (DS(D) & F) 'ouvre le fichier
Set CS = ActiveWorkbook 'définit le classeur source CS
For O = 1 To NBO 'boucle 2 : sur tous les onglets O
Set OS = CS.Sheets(O) 'définit l'onglet source OS du classeur source CS
Set OD = CA.Sheets(O) 'définit l'onglet destination OD du classeur des agrégations CA
'définit la cellule de destination DEST (A1 si A1 est vide , sinon la première cellule vide de la colonne A de l'onglet OD)
Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Range("A" & Application.Rows.Count).End(xlUp).Offset(1, 0))
OS.UsedRange.Copy DEST 'copie la plage éditée de l'onglet source dans la cellule A1 de l'onglet destination
Next O 'prochain onglet de la boucle 2
F = Dir 'définit le prochain fichier du dossier DS(D)
Loop 'boucle
CA.Close True 'ferme le classeur des agrégation en enregistant les modification
Next D 'prochain dossier D de la boucle 1
CO.Close False 'ferme le classeur d'origine sans enregistrer
Application.SheetsInNewWorkbook = 3 'réinitialise le nombre d'onglet à la création d'un nouveau classeur (3 par défaut mais à adapter)
End Sub