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 Destination)
Dim DEST As Range 'déclare la variable DEST (cellule de destination)
Dim TS As Variant 'déclare la variable TS (Tableau Source)
Dim TD As Variant 'déclare la variable TD (Tableau Destination)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CO = ThisWorkbook 'définit le classeur d'Origine
CH = CO.Path & "/" 'définit le chemin d'accès CH
DS(1) = "'/Users/Name/Desktop/Dossier1/" 'définit la dossier DS(1) [à adapter !]
DS(2) = "'/Users/Nameg/Desktop/Dossier2/" 'définit la dossier DS(2) [à adapter !]
DS(3) = "'/Users/Name/Desktop/Dossier3/" 'définit la dossier DS(3) [à adapter !]
DS(4) = "'/Users/Name/Desktop/Dossier4/" 'définit la dossier DS(4) [à adapter !]
DS(5) = "'/Users/Name/Desktop/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 'dossier 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 nouveau 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 & ".xlsx")
Set CA = ActiveWorkbook 'définit le classer des agrégations CA
F = Dir(DS(D) & "*.xlsx") '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
TS = OS.Range("A4").CurrentRegion 'définit le tableau TS
Set OD = CA.Sheets(O) 'définit l'onglet destination OD du classeur des agrégations CA
If OD.Range("A4").Value = "" Then 'condition : si la cellule A4 de l'onglet destination est vide
OD.Range("A4").Resize(UBound(TS, 1), UBound(TS, 2)).Value = TS 'renvoie dans A4 redimensionnée le tableau TS
Else 'sinon
TD = OD.Range("A4").CurrentRegion 'définit le tableau TD
For I = 1 To UBound(TD, 1) 'boucle 1 : sur toutes les lignes I du tableau destination TD
For J = 2 To UBound(TD, 2) 'boucle 2 : sur toutes les colonnes J du tableau destination TD (en partant de la seconde)
If IsNumeric(TS(I, J)) = True And IsNumeric(TD(I, J)) = True Then 'condition : si les deux données sont numériques
TD(I, J) = TD(I, J) + TS(I, J) 'définit la donnée ligne I colonne J de TD (ajoute la valeur de TS)
End If 'fin de la condition
Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
OD.Range("A4").Resize(UBound(TD, 1), UBound(TD, 2)).Value = TD ' remplace les valeurs par le tableau destination TD
End If
Erase TS: Erase TD 'efface les tableaux TS et TD
Next O 'prochain onglet de la boucle 2
CS.Close False 'ferme le classeur source CS sans enregistrer les modifications
F = Dir 'définit le prochain fichier du dossier DS(D)
Loop 'boucle
CA.Close True 'ferme le classeur des agrégation en enregistrant les modifications
Next D 'prochain dossier D de la boucle 1
CO.Close False 'ferme le classeur d'origine sans enregistrer
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
Application.SheetsInNewWorkbook = 3 'réinitialise le nombre d'onglets à la création d'un nouveau classeur (3 par défaut mais à adapter)
End Sub