Sub Liste_Fichiers()
Dim fichier, annee$, w As Worksheet, P As Range, chemin$, lig&, col%, x$
fichier = Application.GetOpenFilename("Fichiers .xlsx (*.xlsx), *.xlsx")
If fichier = False Then Exit Sub
annee = Left(Right(fichier, 9), 4)
If Not annee Like "####" Then MsgBox "Le nom du fichier doit se terminer par une année...": Exit Sub
'---feuille de destination---
Application.ScreenUpdating = False
On Error Resume Next
Set w = Sheets(annee)
If w Is Nothing Then
Sheets(1).Copy After:=Sheets(Sheets.Count)
Set w = ActiveSheet
w.Name = annee
End If
On Error GoTo 0
w.Activate
Set P = w.ListObjects(1).Range
P(2, 1).Resize(, 13) = ""
w.Rows(P.Rows(3).Row & ":" & w.Rows.Count).Delete 'RAZ en dessous
'---traitement des fichiers---
chemin = Left(fichier, InStrRev(fichier, "\"))
fichier = Dir(chemin & "*" & annee & ".xlsx")
lig = 2
While fichier <> ""
P(lig, 1) = Left(fichier, Len(fichier) - 10)
x = "'" & chemin & "[" & fichier & "]"
For col = 2 To 13
P(lig, col) = ExecuteExcel4Macro(x & P(1, col) & "'!R43C7") 'cellule G43
Next col
lig = lig + 1
fichier = Dir 'fichier suivant
Wend
'---compléments---
P(lig + 1, 1) = "TOTAL"
P(lig + 1, 2).Resize(, 24) = "=SUM(R2C:R" & lig - 1 & "C)"
P(lig + 2, 1) = "MOYENNE MENSUELLE"
P(lig + 2, 2).Resize(, 12) = "=AVERAGE(R2C:R" & lig - 1 & "C)"
P.EntireColumn.AutoFit 'ajustement largeurs
End Sub