Bonjour les forumeurs que j'apprécie tant !
Aujourd'hui j'ouvre ce sujet qui a été traité dans d'autres posts mais pas de cette manière. EN effet plusieurs excellents macroteurs ont crées des macros de consolidations de plusieurs fichiers en un. Les seuls sujets que j'ai trouvé ici concernés des consolidations d'une même colonne présente sur plusieurs fichiers et qui permettait de les regrouper dans un même fichier l'une à la suite de l'autre.
Pour ma part, je m'en suis inspiré pour vous transmettre cette macro qui sera surement à améliorer mais qui permet de définir une plage de cellule dans un tableau qui serait présent sur plusieurs fichiers excel et d'en faire la somme dans un tableau de synthèse
Exemple : plusieurs agences ont des tableaux de suivi (même format) avec des nombres à saisir, vous voulez ensuite créer le même tableau qui reprend la somme de chaque saisie de vos agences dans un tableau de synthèse.
Bon c'est assez compliqué à expliquer mais le code reste assez simple. Il suffit de remplacer le choix des cellules dans la plage "Conso" (utiliser l'enregistreur de macro pour déterminer une plage de cellule complexe plutôt que de les noter une par une....)
Vos différents fichiers sont à placer dans le même dossier que Fichier_Conso.xls.
Pour toutes questions ou améliorations n'hésitez pas.
On pourrait aussi placer d'autres variables style récupérer le nom de la feuille dont on veut consolider le tableau j'ai simplifié mon code ici étant donné que les variables utilisés dans la macro pro sont trop parlant par rapport à ma société.
Cordialement.
Aujourd'hui j'ouvre ce sujet qui a été traité dans d'autres posts mais pas de cette manière. EN effet plusieurs excellents macroteurs ont crées des macros de consolidations de plusieurs fichiers en un. Les seuls sujets que j'ai trouvé ici concernés des consolidations d'une même colonne présente sur plusieurs fichiers et qui permettait de les regrouper dans un même fichier l'une à la suite de l'autre.
Pour ma part, je m'en suis inspiré pour vous transmettre cette macro qui sera surement à améliorer mais qui permet de définir une plage de cellule dans un tableau qui serait présent sur plusieurs fichiers excel et d'en faire la somme dans un tableau de synthèse
Exemple : plusieurs agences ont des tableaux de suivi (même format) avec des nombres à saisir, vous voulez ensuite créer le même tableau qui reprend la somme de chaque saisie de vos agences dans un tableau de synthèse.
Bon c'est assez compliqué à expliquer mais le code reste assez simple. Il suffit de remplacer le choix des cellules dans la plage "Conso" (utiliser l'enregistreur de macro pour déterminer une plage de cellule complexe plutôt que de les noter une par une....)
Vos différents fichiers sont à placer dans le même dossier que Fichier_Conso.xls.
Pour toutes questions ou améliorations n'hésitez pas.
VB:
Option Explicit
Option Base 0
Private Declare Function QueryPerformanceCounter Lib "Kernel32" (x As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (x As Currency) As Boolean
Sub reel()
Dim Temp As String
Dim mois As Integer
Dim Conso As Range
Dim Cell As Object
Dim Datas() As Variant
Dim i As Long
i = 0
'Initialisation des variables servants au compteur de temps
Dim Debut As Currency, Fin As Currency, Freq As Currency
QueryPerformanceCounter Debut 'début du compteur
Temp = Dir(ActiveWorkbook.Path & "\*.xls")
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Nettoyage de votre plage et chargement des adresses des cellules à consolider dans Datas()
With Sheets("Feuil1")
Set Conso = .Range("D3:D5,D10:D15")
Conso.ClearContents
ReDim Preserve Datas(0 To Conso.Cells.Count, 0 To 1)
End With
'Incrémentation du tableau d'adresse avec les adresses des cellules a sommer
For Each Cell In Conso
Datas(i, 1) = Cell.Address
i = i + 1
Next Cell
Do While Temp <> ""
If Temp <> "Fichier_Conso.xls" Then
Workbooks.Open ActiveWorkbook.Path & "\" & Temp
Windows(Temp).Visible = False
i = 0
j = 0
With Workbooks(Temp).Sheets("Feuil1")
Set Conso = .Range("D3:D5,D10:D15")
For Each Cell In Conso
Datas(i, 0) = Datas(i, 0) + Cell.Value
i = i + 1
Next Cell
End With
Workbooks(Temp).Close
End If
Temp = Dir
Loop
Workbooks("Fichier_Conso.xls").Sheets("Feuil1").Activate
'Remplissage Feuil1 de votre fichier de consolidation
For i = 0 To UBound(Datas) - 1
With Sheets("Feuil1")
.Range(Datas(i, 1)) = Datas(i, 0)
End With
Next i
Application.DisplayAlerts = True
'Fin du compteur, affichage du temps de calcul
QueryPerformanceCounter Fin
QueryPerformanceFrequency Freq
MsgBox "Durée de la procédure = " & Format(((Fin - Debut) / Freq), "0.00") & " s", vbInformation
End Sub
On pourrait aussi placer d'autres variables style récupérer le nom de la feuille dont on veut consolider le tableau j'ai simplifié mon code ici étant donné que les variables utilisés dans la macro pro sont trop parlant par rapport à ma société.
Cordialement.
Dernière édition: