Sub Copie()
Dim chemin$, nomfeuil$, h&, ncol%, a$, lig&, nomfichier$, f$, P As Range
chemin = ThisWorkbook.Path & "\"
nomfeuil = "Feuil1" 'nom commun des feuilles sources
h = 1000 'nombre maximum de lignes des tableaux sources, à adapter
ncol = 4 'nombre de colonnes des tableaux sources, à adapter
Application.ScreenUpdating = False 'fige l'écran
With Feuil1 'CodeName de la feuille de destination
.Range("A2:A" & .Rows.Count).Resize(, ncol + 1).ClearContents 'RAZ
a = .[A2].Resize(h, ncol).Address(ReferenceStyle:=xlR1C1)
lig = 2 'restitution à partir de la ligne 2 (titres en ligne 1)
nomfichier = Dir(chemin & "*.xls*") '1er fichier du dossier
While nomfichier <> ""
If nomfichier <> ThisWorkbook.Name Then
.Cells(lig, 1).Resize(h) = nomfichier
f = "='" & chemin & "[" & nomfichier & "]" & nomfeuil & "'!" & a
.Cells(lig, 2).Resize(h, ncol).FormulaArray = f 'formule matricielle
lig = lig + h
End If
nomfichier = Dir 'fichier suivant du dossier
Wend
.[A2].Resize(lig, ncol + 1) = .[A2].Resize(lig, ncol + 1).Value 'supprime les formules
With .[B2].Resize(lig)
.Replace 0, "", xlWhole 'efface les zéros
On Error Resume Next 'si aucune cellule vide en colonne B
Set P = .SpecialCells(xlCellTypeBlanks)
Intersect(P.EntireRow, .Offset(, -1).Resize(, ncol + 1)).Delete xlUp
End With
Set P = .UsedRange 'actualise la barre de défilement verticale
End With
End Sub