Donc c'est très simple :
On considère que tes fichiers sont déjà ouverts (ils sortent de ta moulinette) et portent toujours le même nom :
Fichier 1 : "Export Base X"
Fichier 2 : "Export Base Y"
Fichier 3 : "Export Base Z"
ou un bout de nom tjs identique, de type :
Fichier 1 : "Export Base X au 21.03.2007"
Fichier 2 : "Export Base Y au 21.03.2007"
Fichier 3 : "Export Base Z au 21.03.2007"
On y va :
Sub fusion()
Dim NbCol As Integer, NbLine As Long, NbLine1 As Long
Dim Wbk As Workbook, Wbk1 As Workbook
'Recherche du classeur 1 parmi tous les classeurs ouverts :
For Each Wbk In Workbooks
'Recherche du bout de nom toujours identique du classeur 1
If InStr(Wbk.Name, "Export Base X" ) Then
'Ou recherche du nom complet si le nom complet est toujours identique
'if Wbk.name="Export Base X.xls" then
'On le nomme
Set Wbk1 = Wbk
'On compte le nombre de lignes de la feuille 1 du classeur 1
'En imaginant que c'est bien cette feuille sur laquelle on travaille
NbLine1 = Wbk1.Worksheets(1).Cells(65000, 1).End(xlUp).Row
'On sort de la boucle si on a trouvé
Exit For
End If
Next Wbk
'Recherche du classeur 2 et 3 (dans n'importe quel ordre a priori) parmi tous les claseurs ouverts :
For Each Wbk In Workbooks
'Recherche du bout de nom toujours identique
If InStr(Wbk.Name, "Export Base Y" ) Or InStr(Wbk.Name, "Export Base Z" ) Then
'Ou recherche du nom complet si le nom complet est toujours identique
'if Wbk.name="Export Base Y.xls" or Wbk.name="Export Base Z.xls" then
'Pas la peine de le nommer.. c'est le 2 ou le 3 au choix
'On compte le nombre de colonnes en se basant sur la ligne 1 (si ligne 1 = ligne en-tête
'sinon, adapter)
NbCol = Wbk.Worksheets(1).Cells(1, 256).End(xlToLeft).Column
'On compte le nombre de lignes en se basant sur la colonne 1 (si colonne 1 non vide
'sinon, adapter)
NbLine = Wbk.Worksheets(1).Cells(65000, 1).End(xlUp).Row
'Copie du bloc à partir de la ligne 2 (donc sans les en-tetes) + collage sur la dernière ligne + 1 de la feuille 1 du classeur 1
Range(Wbk.Worksheets(1).Cells(2, 1), Wbk.Worksheets(1).Cells(NbLine, NbCol)).Copy Wbk1.Worksheets(1).Cells(NbLine1 + 1, 1)
'On incrémente le nombre de lignes total de la feuille 1 du classeur 1
NbLine1 = NbLine1 + NbLine
'On ne sort pas de la boucle car il faut faire les 2 classeur
'Facultatif : On ferme le fichier
Wbk.Close
End If
Next Wbk
End Sub
A ce stade ton classeur 1 est rempli