' Macro qui permet de compiler les informations contenues dans
' différents fichier pour les regrouper dans un fichier récapitulatif
' GCXL
'-------------------------------------------------------------------------------
Sub Creer_Recapitulatif()
Dim wbRecap As Workbook         'fichier recap
Dim wsRecap As Worksheet        'feuille où on écrit les données
Dim wbSource As Workbook        'fichier à ouvrir
Dim wsSource As Worksheet       'feuille où on cherche les données
Dim DernLign As Integer         'ligne où on écrit les données
Dim vFichiers As Variant        'noms des fichiers
Dim i As Integer, k As Integer
Dim rgRecap As Range            'plage où on copie les données
 
Set wbRecap = ThisWorkbook       'Fichier récapitulatif
Set wsRecap = wbRecap.Sheets(1)  'on écrit dans la feuille 1 du fichier récapitulatif
 
'Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
    vFichiers = Selectionner_Fichiers("Sélectionner les logs à compiler") 'Appel de Fonction pour ouvrir fichiers
 
'Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
        Debug.Print "Aucun fichier sélectionné."
        MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
On Error Resume Next
 
    Application.ScreenUpdating = False
 
'Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
        Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
 
'---------------------------------------------------
'C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k))                        'on ouvre le fichier
Set wsSource = wbSource.Sheets(1).Copy                             'On copie les données de la feuille 1
        before = wbRecap.Sheets(1)
        DernLign = wbRecap.Sheets(1).Range("A60000").End(xlUp).Row + 1     'ligne pour écrire le log des fichiers compilés
 
'On copie les données vers le fichier Recapitulatif;
Set rgRecap = wsRecap.Range("A65000").End(xlUp).Offset(1, 0)
        rgRecap = Time
With wsSource
            rgRecap.Offset(0, 1) = .Range("B1")
            rgRecap.Offset(0, 2) = .Range("B2")
            rgRecap.Offset(0, 3) = .Range("B3")
            rgRecap.Offset(0, 4) = .Range("B4")
            rgRecap.Offset(0, 5) = .Range("B5")
            rgRecap.Offset(0, 6) = .Range("B6")
            rgRecap.Offset(0, 7) = .Range("B7")
            rgRecap.Offset(0, 8) = .Range("B8")
            rgRecap.Offset(0, 9) = .Range("B9")
            rgRecap.Offset(0, 10) = .Range("B10")
            rgRecap.Offset(0, 11) = .Range("B11")
            rgRecap.Offset(0, 12) = .Range("B12")
            rgRecap.Offset(0, 13) = .Range("B13")
            rgRecap.Offset(0, 14) = .Range("B14")
End With
 
        wbSource.Close              'fermer fichier
Set wbSource = Nothing
'----------------------------------------------------------
Next k
 
    Application.ScreenUpdating = True
    Application.StatusBar = False
 
End Sub
    
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
 
    sFiltre = "Fichiers LOG (.log), *.log*"
    bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
    Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
