Comment lier les données de plusieurs Excel dans un seul
z
bonsoir tout le monde,
svp j'ai 1 besoin d'urgent car je suis entrain de travailler un travail urgent
j'ai à peu pres 50 excelque je dois resumer dans seul en copiant certains cellules (les memes dans tous les fichiers excel)
le nom des fichier est NoSeguimiento (1),NoSeguimiento (2),NoSeguimiento (3).....etc jusqu' à 50
je veux les copier dans un excel que j'appel récap
l'exemple des excel est en attché
merci d'avance
Bonsoir,
une solution générique de fusion de fichiers, à tester et à éventuellement adapter. l'exemple que tu as donné ne nous éclaire pas beaucoup à comprendre le résultat que tu veux obtenir.
Sub fusionclasseur()
Set wbf = ThisWorkbook ' wbf reférence le classeur maitre
Set wsc = wbf.Worksheets.Add ' on ajoute une feuille dans le classeur maitre
wsc.Name = "Résultat fusion" ' on nomme la feuille " résultat fusion"
'-------------------------------
' on demande le nom du répertoire qui contient les fichiers à fusionner via dialogue windows
' résultat dans chemin
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.Title = "Sélectionner le répertoire contenant les fichiers à fusionner"
.Filters.Clear
.AllowMultiSelect = False
If .Show = -1 Then ' si un répertoire sélectionné
chemin = .SelectedItems(1) & "\" ' on le met dans chemin
Else
Exit Sub 'pas de répertoire sélectionné, on arrête
End If
End With
'---------------------------------
masque = InputBox("introduire le filtre de sélection des classeurs (défaut *.xls*)") ' masque est le filtre des fichiers à sélectionner
wsn = InputBox("Nom de la feuille à copier de chaque classeur (défaut première feuille trouvée)") ' wsn nom de la feuille à copier de chaque classeur à fusionner
If masque = "" Then masque = "*.xls*" ' si masque est vide on attribue le filtre par défaut
f = Dir(chemin & masque) ' f= nom du premier fichier correspondant au critère
ctrf = 0 ' compteur de classeurs fusionnés
pli = 1 'première ligne sur résultat fusion
While f <> "" ' tant qu'il y a des fichiers(classeurs)) à fusionner
If wbf.Name <> f Then ' si classeur différent du classeur maitre
ctrf = ctrf + 1
Set wbi = Workbooks.Open(chemin & f) ' on ouvre le classeur
If wsn = "" Then Set wsi = wbi.Worksheets(1) Else Set wsi = wbi.Worksheets(wsn) ' on sélectionne la feuille à fusionner =wsi
dli = wsi.Range("A" & Rows.Count).End(xlUp).Row ' dli dernière ligne sur wsi
If dli > 1 Then
If ctrf = 1 Then pl = 1 Else pl = 2 ' si premier classeur à fusionner, il faut copier l'entête
wsi.Rows(pl & ":" & dli).Copy
wsc.Range("a" & pli).PasteSpecial Paste:=xlPasteValues 'on copie les lignes du classeur à fusionner dans la feuille résultat de fusion
pli = pli + dli + 1 - pl ' on ajuste le nombre de lignes de résultat fusion
End If
wbi.Close 'on ferme le classeur
End If
f = Dir() 'on passe au classeur suivant
Wend
End Sub