Désolé pour le délai, il fallait que je me ravitaille et j'ai été rattrapé par l'heure du repas avant d'avoir bouclé avec tests...
Sub MajNoms()
Dim d As Object, cc, fs, i&, f%, chD$
chD = ThisWorkbook.Path & "\"
fs = Array("source1.xlsx", "source2.xlsx")
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
For f = 0 To 1
On Error GoTo OuvrirFichier
cc = Workbooks(fs(f)).Worksheets(1).Range("A1").CurrentRegion _
.Offset(, 2).Resize(, 1)
On Error GoTo 0
For i = 2 To UBound(cc)
d(cc(i, 1)) = ""
Next i
Workbooks(fs(f)).Close False
Next f
cc = d.keys
With ThisWorkbook.Worksheets(1)
.Range("A1").CurrentRegion.Offset(1).ClearContents
.Range("A2").Resize(UBound(cc)).Value = WorksheetFunction.Transpose(cc)
End With
Exit Sub
OuvrirFichier:
With Workbooks.Open(chD & fs(f)).Worksheets(1)
cc = .Range("A1").CurrentRegion.Offset(, 2).Resize(, 1)
End With
Resume Next
End Sub
La procédure fonctionnera, que les fichiers source soient ouverts ou fermés.
L'adaptation à faire ne concerne que les deux premières lignes ci-dessous :
chD = ThisWorkbook.Path & "\"
fs = Array("source1.xlsx", "source2.xlsx")
La première ligne est le chemin des fichiers source, défini ici comme le même que celui du fichier résultat, à remplacer par le chemin effectif (chaîne à mettre entre guillemets et faire terminer par un antislash \).
Le seconde forme un tableau avec les noms de fichiers : les remplacer par les véritables noms.
Pour tester la procédure, tu peux, avant de faire les modifications, placer les 3 fichiers joints dans un même dossier et cliquer sur le bouton dans résultat.
Cordialement.