Merci je teste ça dans 5min (je dois sortir le chien ahah)
juste pour info sur le code que j'avais copié, j'ai tenté de modifier l'ordre des fichiers et... ça a fonctionné ! trop bizarre non ? bon par contre il faut que je liste tous les fichiers et c'est pas le but si j'ai 100 fichier :d mais je colle ça juste au cas où :
Option Explicit
Sub Assembler()
Dim chemin$, liste, feuille$, ncol%, lig&, fichier, form$, h&
chemin = ThisWorkbook.Path & Application.PathSeparator 'dossier à adapter
liste = Array("Source3.xlsx", "Source1.xlsx", "Source2.xlsx")
feuille = "Keywords" 'nom des feuilles à copier, à adapter
ncol = 15 'nombre de colonnes, à adapter
lig = 2 '1ère ligne de restitution, à adapter
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Feuil1 'CodeName à adapter
.UsedRange.EntireRow.Offset(1).Delete 'RAZ
For Each fichier In liste
form = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
h = 0
On Error Resume Next
h = ExecuteExcel4Macro("MATCH(""zzz""," & form & "C1)") 'calcul sur colonne 1
On Error GoTo 0
If h > 1 Then
With .Cells(lig, 1).Resize(h - 1, ncol)
.FormulaArray = "=" & form & "R2C1: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 - 1
End If
Next
With .UsedRange: End With 'actualise les barres de défilement
End With
End Sub