Sub Recopie(Répertoire)
    Dim c As Range, d As Range, nOnglet As String
    Dim Fso As Scripting.FileSystemObject
    Dim RépSource As Scripting.Folder
    Dim SousRép As Scripting.Folder
    Dim Fichier As Scripting.File
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set RépSource = Fso.GetFolder(Répertoire)
    Application.ScreenUpdating = False
    Sheets("Menu").Range("B3") = Sheets("Menu").Range("B3") + 1
    For Each Fichier In RépSource.Files
        If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers *SURF.xls
            With frmZavancement
                FichEnCours = FichEnCours + 1
                .Label1.Caption = "J'en suis à " & FichEnCours & " sur " & TotalFichiers & "."
                .Label2.Caption = Format(CDate(Now - Tdepart), "N:ss")
                .FrameProgress.Caption = Format(FichEnCours / TotalFichiers, "0%")
                .LabelProgress.Width = FichEnCours / TotalFichiers * (.FrameProgress.Width - 10)
                .Show 0 'Affichage Progressbar en non modal
            End With
            nOnglet = RechFermé(RépSource & "\" & Fichier.Name) 'ADO Pour trouver le nom du 1er onglet
            Set c = Sheets("RecapG").Range("D" & Sheets("RecapG").Range("d65536").End(xlUp).Row + 1)
            Set d = Sheets("RecapSG").Range("D" & Sheets("RecapSG").Range("d65536").End(xlUp).Row + 1)
            d(1, -2) = Répertoire
            d(1, -1) = Fichier.Name
            d(1, 0) = nOnglet
            For t = 1 To 7
                d(1, t).Formula = "='" & Répertoire & "\[" & Fichier.Name & "]" & nOnglet & "'!B" & t
                d(1, t) = d(1, t)
            Next t
            Sheets("Menu").Range("B4") = Sheets("Menu").Range("B4") + 1
            t = 8
1           t = t + 1
            c.Offset(t - 9, 0).Formula = "='" & Répertoire & "\[" & Fichier.Name & "]" & nOnglet & "'!A" & t
                If c.Offset(t - 9, 0).Value = 0 Then c.Offset(t - 9, 0).Clear Else GoTo 1
                t = t - 1
                Range(c, c(t - 8, 1)).AutoFill Range(c, c(t - 8, 23))
                Range(c, c(t - 8, 23)).Value = Range(c, c.Offset(t - 8, 22)).Value
                c(1, -2).Resize(t - 8) = Répertoire
                c(1, -1).Resize(t - 8) = Fichier.Name
                c(1, 0).Resize(t - 8) = nOnglet
        End If
    Next Fichier
    '--- Appel récursif pour lister les fichiers dans les sous-répertoires ---.
    For Each SousRép In RépSource.subfolders
        Recopie SousRép.Path
    Next SousRép
End Sub