Sub Consolider()
Dim chemin$, fichier$, feuille$, ad$, f$, lig&
chemin = ThisWorkbook.Path & "\" 'dossier à adapter si nécessaire
fichier = Dir(chemin & "*.xls*") '1er fichier du dossier
feuille = "Sheet1" 'feuille à copier
ad = "A2:AY20" 'plage à copier
f = "='" & chemin & "[?]" & feuille & "'!" & ad 'formule adaptable"
lig = 2 '1ère ligne de restitution
Application.ScreenUpdating = False
With ActiveSheet 'à adapter
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
.Rows("2:" & .Rows.Count).Delete 'RAZ, ligne de titres à renseigner
While fichier <> ""
If fichier <> ThisWorkbook.Name Then
With .Range(ad).Offset(lig - 2)
.FormulaArray = Replace(f, "?", fichier) 'formule de liaison matricielle
.Value = .Value 'supprime la formule
.Replace 0, "", xlWhole 'les cellules vides renvoient zéro
End With
lig = .UsedRange.Row + .UsedRange.Rows.Count 'nouvelle ligne de restitution
End If
fichier = Dir 'fichier suivant du dossier
Wend
.Columns.AutoFit 'ajustement largeurs
End With
End Sub