Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Or Target.Count > 1 Then Exit Sub
Dim chemin$, fichier$, feuille$, adr$, fich$, form$, i As Variant
chemin = ThisWorkbook.Path & "\Registre\" 'à adapter
fichier = Dir(chemin & "*.xlsm") '1er fichier du dossier
feuille = "Feuil1" 'nom des feuilles sources, à adapter
If fichier = "" Then MsgBox "Aucun fichier .xlsm trouvé...": Exit Sub
adr = Target.Address(, , xlR1C1, True)
Do While fichier <> ""
fich = Replace(fichier, "'", "''") 's'il y a une apostrophe dans le nom
form = "'" & chemin & "[" & fich & "]" & feuille & "'!"
i = ExecuteExcel4Macro("MATCH(" & adr & "," & form & "C2,0)") 'formule de liaison
If IsNumeric(i) Then
Target(1, 0) = ExecuteExcel4Macro("INDEX(" & form & "C1," & i & ")")
Target(1, 2) = ExecuteExcel4Macro("INDEX(" & form & "C3," & i & ")")
Exit Do 'on sort à la 1ère occurrence
End If
fichier = Dir 'fichier suivant
Loop
If IsError(i) Then Union(Target(1, 0), Target(1, 2)) = "" 'RAZ
End Sub