Sub Consolider()
'se lance par les touches Ctrl+C
Dim chemin$, fichier$, feuille$, ncol%, F As Worksheet, lig&, form$, h&, h1&
chemin = ThisWorkbook.Path & "\" 'dossier à adapter
fichier = Dir(chemin & "*.xlsx") '1er fichier du dossier
feuille = "Feuil1" 'nom des feuilles à copier, à adapter
ncol = 29 'nombre de colonnes, à adapter
Set F = Feuil1 'CodeName de la feuille de restitution, à adapter
lig = 1 '1ère ligne de restitution, à adapter
Application.ScreenUpdating = False
F.[A1].CurrentRegion.EntireRow.Offset(2).Delete 'RAZ
While fichier <> ""
If fichier Like "##_##_##*" Then
form = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
h = 0: h1 = 0
On Error Resume Next
h = ExecuteExcel4Macro("MATCH(""zzz""," & form & "C1)")
h1 = ExecuteExcel4Macro("MATCH(9^9," & form & "C1)")
On Error GoTo 0
h = IIf(h > h1, h, h1)
If h > 2 Then
If lig > 1 Then F.Rows("1:2").Copy F.Rows(lig) 'titres
F.Cells(lig + 1, "R") = ExecuteExcel4Macro(form & "R2C18") 'date
F.Cells(lig + 1, "S") = ExecuteExcel4Macro(form & "R2C19") 'date
With F.Cells(lig + 2, 1).Resize(h - 2, ncol)
.FormulaArray = "=" & form & "R3C1:R" & h & "C" & ncol 'formule de liaison matricielle
.Value = .Value 'supprime la formule
.Replace 0, "", xlWhole 'supprime les zéros
End With
lig = lig + h
End If
End If
fichier = Dir 'fichier suivant
Wend
F.Columns.AutoFit 'ajuste les largeurs
With F.UsedRange: End With 'actualise les barres de défilement
End Sub