Consolider plusieurs fichiers excel sur un seul fichier

Compress

XLDnaute Occasionnel
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.

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:

shuyi

XLDnaute Nouveau
Re : Consolider plusieurs fichiers excel sur un seul fichier

Bonjour,

J'ai besoin de votre aide, je débute en macro... voici mon problème :
J'ai 4 fichiers excels qui se nomment respectivement A, B, C, et D. Chacun de ces fichiers comportent 3 onglets qui sont Retail, DG, et Gros. Les 3 onglets ont exactement le même format dans les 4 fichiers et j'ai créé un 5ème fichier qui s'intitule conso (même format également) pour avoir la somme des chiffres des 4 fichiers pour chaque onglet.
J'ai recopié exactement votre code, mais je n'arrive pas à le faire marcher et je n'arrive pas à voir où est mon erreur.

Merci d'avance!!!
 

Discussions similaires

Réponses
0
Affichages
153
Réponses
2
Affichages
243
Réponses
2
Affichages
118

Statistiques des forums

Discussions
312 243
Messages
2 086 550
Membres
103 245
dernier inscrit
gdesign