Excel : Fusionner plusieurs fichier XLS
Résolu
piroc
Messages postés
67
Statut
Membre
-
Reny -
Reny -
Bonjour à tous,
Je suis sous Excel 2007
J'ai plusieurs fichier XLS où il y a des tableaux.
J'aimerai savoir s'il est possible, par une quelconque manière, de faire en sorte que tous les fichier sélectionnés XLS s'ouvre dans un seule et même fichier XLS.
De se fait, tous les tableaux se "suivrons" en gardant leur colonnes identiques.
Il y a bien sur le copier/coller, mais j'ai énormément de fichier XLS à traiter...
Si vous avez des solution pour Excel 2010/2013, je suis preneur :)
Merci à tous.
Je suis sous Excel 2007
J'ai plusieurs fichier XLS où il y a des tableaux.
J'aimerai savoir s'il est possible, par une quelconque manière, de faire en sorte que tous les fichier sélectionnés XLS s'ouvre dans un seule et même fichier XLS.
De se fait, tous les tableaux se "suivrons" en gardant leur colonnes identiques.
Il y a bien sur le copier/coller, mais j'ai énormément de fichier XLS à traiter...
Si vous avez des solution pour Excel 2010/2013, je suis preneur :)
Merci à tous.
A voir également:
- Excel : Fusionner plusieurs fichier XLS
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
5 réponses
Salut,
en modifiant légerement la macro donnée plus haut (modifs en gras):
A+
On entend par une belle solution, la solution simple et facile d'un problème difficile et compliqué
en modifiant légerement la macro donnée plus haut (modifs en gras):
Sub regroupe()
Dim chemin As String ' classeur regroupé
Dim rep As String ' répertoire à traiter
Dim fic As String ' classeur regroupé
Dim ligne As Long ' ligne écriture
Dim nbc As Integer ' nombre de classeurs
Dim Wf As Worksheet ' feuille regroupement
Dim Wl As Worksheet ' feuille regroupée
rep = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
On Error GoTo fin
Set Wf = ThisWorkbook.ActiveSheet ' variable feuille groupe
Wf.Cells.ClearContents
nbc = 0: nbf = 0 ' initialisation variables
ligne = 1
fic = Dir(rep & "*.xls") ' recherche fichiers
While fic <> ""
If fic <> ThisWorkbook.Name Then
chemin = rep & fic ' chemin fichiers
Workbooks.Open chemin, 0 ' ouverture
Set Wl = ActiveWorkbook.Sheets(1)
Wl.Copy After:=Wf
Workbooks(fic).Close SaveChanges:=False ' Fermeture du classeur
nbc = nbc + 1
End If
fic = Dir
Wend
fin:
MsgBox nbc & " classeurs regroupés"
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
A+
On entend par une belle solution, la solution simple et facile d'un problème difficile et compliqué
J'ai bien corrigé et simplifié la macro plus haut, j'étais aussi allé un peu vite avec la macro de gbinforme, merci tompols :)
Celle-ci marche bien, en créant une nouvelle feuille pour chaque classeur à insérer :
Il faut :
_créer un classeur dans le dossier où se situent tous tes classeurs à regrouper
_l'appeler comme bon te semble
_l'ouvrir et appuyer sur Alt+F11 (l'éditeur VBA s'ouvre)
_dans ThisWorkbook (par exemple), colle la macro ci-dessus, et exécute la en appuyant sur F5.
Chez moi ça fonctionne :-)
-------------------
Cordialement,
Clément
Celle-ci marche bien, en créant une nouvelle feuille pour chaque classeur à insérer :
Sub regroupe()
Dim chemin As String
Dim rep As String
Dim fic As String
Dim Wf As Workbook
Dim source As Range
rep = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Set Wf = ThisWorkbook
fic = Dir(rep & "*.xls") ' recherche fichiers
While fic <> ""
If fic <> ThisWorkbook.Name Then
chemin = rep & fic ' chemin fichiers
Workbooks.Open chemin, 0 ' ouverture
Set source = ActiveWorkbook.Sheets(1).Range("A1:IV65000")
Wf.Sheets.Add
source.Copy
With Wf.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
End With
ActiveWorkbook.Close
End If
fic = Dir
Wend
End Sub
Il faut :
_créer un classeur dans le dossier où se situent tous tes classeurs à regrouper
_l'appeler comme bon te semble
_l'ouvrir et appuyer sur Alt+F11 (l'éditeur VBA s'ouvre)
_dans ThisWorkbook (par exemple), colle la macro ci-dessus, et exécute la en appuyant sur F5.
Chez moi ça fonctionne :-)
-------------------
Cordialement,
Clément
Il c'est arrêter au 18ème classeurs.
Je vais tout supprimer et relancer pour voir
Mais petit problème. Donc la VBA me met tout les classeurs dans un seul et même classeur (global.xls) ce qui est génial. Mais chaque tableau et sur une feuille différente, j'aurais aimais avoir tout sur la même feuille...
Je vais tout supprimer et relancer pour voir
Mais petit problème. Donc la VBA me met tout les classeurs dans un seul et même classeur (global.xls) ce qui est génial. Mais chaque tableau et sur une feuille différente, j'aurais aimais avoir tout sur la même feuille...
Re,
Voici une macro de gbinforme qui fonctionne chez moi (une macro trouvée en prenant le premier résultat d'une recherche google au fait ;))
Attention, il faut que le classeur où tout sera regroupé s'appelle "global.xls" et qu'il soit placé dans le même dossier que tous les autres:
Voici une macro de gbinforme qui fonctionne chez moi (une macro trouvée en prenant le premier résultat d'une recherche google au fait ;))
Attention, il faut que le classeur où tout sera regroupé s'appelle "global.xls" et qu'il soit placé dans le même dossier que tous les autres:
Sub regroupe()
Dim chemin As String ' classeur regroupé
Dim rep As String ' répertoire à traiter
Dim fic As String ' classeur regroupé
Dim ligne As Long ' ligne écriture
Dim nbc As Integer ' nombre de classeurs
Dim nbf As Integer ' nombre de feuilles
Dim nbl As Integer ' nombre de lignes
Dim c As Integer ' nombre de colonnes
Dim l As Long ' ligne lecture
Dim Wf As Worksheet ' feuille regroupement
Dim Wl As Worksheet ' feuille regroupée
rep = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
On Error GoTo fin
Set Wf = ThisWorkbook.ActiveSheet ' variable feuille groupe
Wf.Cells.ClearContents
nbc = 0: nbf = 0 ' initialisation variables
ligne = 1
fic = Dir(rep & "*.xls") ' recherche fichiers
While fic <> ""
If fic <> ThisWorkbook.Name Then
chemin = rep & fic ' chemin fichiers
Workbooks.Open chemin, 0 ' ouverture
Set Wl = ActiveWorkbook.Sheets(1)
nbl = Wl.UsedRange.Rows.Count
c = Wl.UsedRange.Columns.Count
If ligne > 2 Then l = 2 Else l = 1 ' une seule fois le titre
Wl.Cells(l, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 1)
ligne = ligne + nbl - l + 1
nbf = nbf + 1
ActiveWorkbook.Close SaveChanges:=False ' Fermeture du classeur
nbc = nbc + 1
End If
fic = Dir
Wend
fin:
MsgBox nbc & " classeurs regroupés avec " & nbf & " feuilles et " & ligne & " lignes"
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Je n'est jamais utilisé de macro ....
Comment dois-je procéder ?
J'ai mon dossier où il y a tous mes fichier XLS: C:\Documents and Settings\Dell\Bureau\SOL 4\1
J'y est crée un fichier XLS vide appelé global.xls
Lancer le fichier XLS de @gbinforme http://cjoint.com/12ma/BCAxswLpCvy.htm
Activé la macro (Option -> Activer ce contenu -> OK)
et j'ai un message: "0 classeurs regroupés avec 0 feuilles et 1 lignes"
Comment dois-je procéder ?
J'ai mon dossier où il y a tous mes fichier XLS: C:\Documents and Settings\Dell\Bureau\SOL 4\1
J'y est crée un fichier XLS vide appelé global.xls
Lancer le fichier XLS de @gbinforme http://cjoint.com/12ma/BCAxswLpCvy.htm
Activé la macro (Option -> Activer ce contenu -> OK)
et j'ai un message: "0 classeurs regroupés avec 0 feuilles et 1 lignes"
Bonjour, en fait j'aimerai de l'aide de votre part, j'ai 60 fichiers Excel ou j'ai des informations dans la colonne K de 9 à 30. je voudrais sans ouvrir les 60 fichiers copier les cases de K9 à K30 de tous les classeurs l'une a la suite de l'autre dans un nouveau classeur nommer par exemple Evolution et en commençant par exemple a partir de la case F9 à F30, la seconde copie serait elle sur les case G9 a G30 et ainsi de suite. Les classeurs a copier sont nommé en reprenant a la fin la semaine et l'année XXXXX-01-2013. La compilation doit prendre en compte semaine après semaine de les prises de références. Une fois que j'ai regroupé ses donnée je doit créer un graphique montrant l'évolution des données.
En vous remerciant d'avance.
En vous remerciant d'avance.
Bonjour,
J'ai utilisé la macro qui regroupe tous les fichiers dans une seule et même feuille, en mettant tout à la suite.
chacuns de mes fichiers comportent un tableau. Pensez-vous qu'il serait possible de remplir les tableaux dans le fichier "global" et qu'ils soient simultanément rempli dans chacuns de leur fichier source??
Merci d'vance pour votre aide
J'ai utilisé la macro qui regroupe tous les fichiers dans une seule et même feuille, en mettant tout à la suite.
chacuns de mes fichiers comportent un tableau. Pensez-vous qu'il serait possible de remplir les tableaux dans le fichier "global" et qu'ils soient simultanément rempli dans chacuns de leur fichier source??
Merci d'vance pour votre aide
Bonjour,
Merci beaucoup pour cette macro qui m'a déjà fait gagné beaucoup de temps.
J'aurais juste deux questions qui me permettraient d'en gagner encore plus.
Est-il possible d'importer chaque onglet les uns à coté des autres (au lieu des uns sous les autres) ?
Est-il possible de n'importer qu'une plage de celulles (la plage F7:F37 présente sur chacun des classeurs) ?
Merci par avance!
Merci beaucoup pour cette macro qui m'a déjà fait gagné beaucoup de temps.
J'aurais juste deux questions qui me permettraient d'en gagner encore plus.
Est-il possible d'importer chaque onglet les uns à coté des autres (au lieu des uns sous les autres) ?
Est-il possible de n'importer qu'une plage de celulles (la plage F7:F37 présente sur chacun des classeurs) ?
Merci par avance!
Bonjour,
Soyons précis, un fichier xls est un classeur Excel qui contient des feuilles de calcul.
Ton besoin est de mettre toutes les feuilles de tous les classeurs dans un seul classeur ?
Ou de fusionner toutes les feuilles pour ne faire qu'une seule feuille excel en un classeur ?
Soyons précis, un fichier xls est un classeur Excel qui contient des feuilles de calcul.
Ton besoin est de mettre toutes les feuilles de tous les classeurs dans un seul classeur ?
Ou de fusionner toutes les feuilles pour ne faire qu'une seule feuille excel en un classeur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai le même résultat, sans le message "0 classeurs regroupés avec 0 feuilles et 1 lignes"