Public Sub ImportFichiers()
Dim fichiersImport
Dim classeurCourant As Workbook
Dim iFichier As Integer
Dim feuilleImport As Worksheet
Dim zoneCopie As Range, zoneColle As Range
'définir la feuille d'import (elle doit déjà avoir les 3 lignes d'entêtes complétées)
Set feuilleImport = ThisWorkbook.Sheets("Feuille Import")
'récupérer les fichiers à ouvrir
fichiersImport = Application.GetOpenFilename("Fichiers Excel, *.xls; *.xlsx; *.xlsm", , "Sélectionnez les fichiers à importer", , True)
'boucler sur chaque classeurs
For iFichier = LBound(fichiersImport) To UBound(fichiersImport)
'ouvrir le classeur
Set classeurCourant = Application.Workbooks.Open(fichiersImport(iFichier), , True)
'remplacer "Feuil1" par le nom de la feuille à copier
With classeurCourant.Sheets("Feuil1")
'récupérer la zone à copier
Set zoneCopie = .Range("A3").CurrentRegion
Set zoneCopie = zoneCopie.Resize(zoneCopie.Rows.Count - 3, zoneCopie.Columns.Count).Offset(3)
'récupérer la zone où coller le contenu
Set zoneColle = feuilleImport.Range("A3").CurrentRegion
Set zoneColle = zoneColle.Offset(zoneColle.Rows.Count).Resize(1, 1)
'copier
zoneCopie.Copy zoneColle
'rajouter sur la colonne de droite le nom du fichier et fusionner les cellules
'remplacer les "F" par la colonne correspondante
feuilleImport.Range("F" & zoneColle.Row).Value = NomDuFichier(CStr(fichiersImport(iFichier)))
feuilleImport.Range("F" & zoneColle.Row & ":F" & zoneColle.Row + zoneCopie.Rows.Count - 1).MergeCells = True
'mettre en forme les cellules fusionnées
MiseEnFormeCelluleColF feuilleImport.Range("F" & zoneColle.Row & ":F" & zoneColle.Row + zoneCopie.Rows.Count - 1)
End With
'fermer le classeur
classeurCourant.Close
Next iFichier
End Sub