Voici un exemple :
mets fichier1.xlsx, fichier2.xlsx, fichier3.xlsx dans un dossier quelconque
et fais tourner tes_macro.xlsm
J'ai reporté les macros sur le fichier "maître"
ici la macro se contente de :
ActiveSheet.Cells(1, 1) = fichier.Name
c'est-à-dire écrire le nom du fichier sur la première cellule de la feuille active à l'ouverture
Option Explicit
Sub mymacro()
Dim MonRepertoire As String
Dim Repertoire As FileDialog
Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
Repertoire.Show
If Repertoire.SelectedItems.Count > 0 Then
MonRepertoire = Repertoire.SelectedItems(1)
End If
ListeFichiers MonRepertoire
MsgBox "Fin ..."
End Sub
Sub ListeFichiers(Repertoire As String)
Dim Fso, SourceFolder, SubFolder, fichier As Object
Dim k As Integer
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(Repertoire)
' boucle sur tous les fichiers du répertoire
For Each fichier In SourceFolder.Files
Workbooks.Open Filename:=Repertoire & "\" & fichier.Name
ActiveSheet.Cells(1, 1) = fichier.Name
Workbooks(fichier.Name).Close SaveChanges:=True
Next fichier
' appel récursif pour les sous-répertoires
For Each SubFolder In SourceFolder.subfolders
ListeFichiers SubFolder.Path
Next SubFolder
End Sub