Excel : Fusionner plusieurs fichier XLS
Résolu/Fermé
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
-
26 oct. 2012 à 11:48
Reny - 3 sept. 2014 à 11:14
Reny - 3 sept. 2014 à 11:14
A voir également:
- Excel : Fusionner plusieurs fichier XLS
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
- Mise en forme conditionnelle excel - Guide
5 réponses
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
Modifié par tompols le 26/10/2012 à 14:51
Modifié par tompols le 26/10/2012 à 14:51
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é
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
Modifié par Morgothal le 26/10/2012 à 15:20
Modifié par Morgothal le 26/10/2012 à 15:20
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
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
26 oct. 2012 à 15:26
26 oct. 2012 à 15:26
ha ok c'est la VBA qui me posai problème :)
Sa à l'air de fonctionné ! Mon pc rame à mort mais je voie dans la VBA que des feuilles s'ajoutes peu à peu a mon global.xls
Je vous dit sa dans quelque minutes, j'ai 82 classeur à mettre :)
Sa à l'air de fonctionné ! Mon pc rame à mort mais je voie dans la VBA que des feuilles s'ajoutes peu à peu a mon global.xls
Je vous dit sa dans quelque minutes, j'ai 82 classeur à mettre :)
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
26 oct. 2012 à 15:28
26 oct. 2012 à 15:28
ha...j'ai un message d'erreur
Erreur d'exécution '1004':
Erreur définie pas l'application ou par l'objet
Erreur d'exécution '1004':
Erreur définie pas l'application ou par l'objet
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
26 oct. 2012 à 15:32
26 oct. 2012 à 15:32
J'ai lancé sur une trentaine de classeurs, je n'ai pas de souci de ce genre...
J'investigue pour voir
J'investigue pour voir
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
26 oct. 2012 à 15:33
26 oct. 2012 à 15:33
Salut Morgothal,
bien vu pr la correction, par contre tu manipules du Range en limitant à du Excel 2003 (""A1:IV65000"), ça me parait mieux d'utiliser la méthode copy sur la feuille.....
piroc, tente avec mon fichier en attendant (commentaire au msg précédent)
bien vu pr la correction, par contre tu manipules du Range en limitant à du Excel 2003 (""A1:IV65000"), ça me parait mieux d'utiliser la méthode copy sur la feuille.....
piroc, tente avec mon fichier en attendant (commentaire au msg précédent)
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
26 oct. 2012 à 15:36
26 oct. 2012 à 15:36
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...
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
26 oct. 2012 à 14:16
26 oct. 2012 à 14:16
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
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
26 oct. 2012 à 14:36
26 oct. 2012 à 14:36
Salut,
A la lecture on dirait bien que ce code regroupe les tableaux de différents classeurs dans un seul et même tableau....
A la lecture on dirait bien que ce code regroupe les tableaux de différents classeurs dans un seul et même tableau....
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
26 oct. 2012 à 14:52
26 oct. 2012 à 14:52
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"
chnoirhomme
Messages postés
3
Date d'inscription
lundi 18 février 2013
Statut
Membre
Dernière intervention
18 février 2013
18 févr. 2013 à 22:04
18 févr. 2013 à 22:04
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
Max1618
Messages postés
1
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
30 juillet 2013
30 juil. 2013 à 16:41
30 juil. 2013 à 16:41
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!
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
26 oct. 2012 à 12:00
26 oct. 2012 à 12:00
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
piroc
Messages postés
61
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
17 avril 2015
26 oct. 2012 à 12:19
26 oct. 2012 à 12:19
Ton besoin est de mettre toutes les feuilles de tous les classeurs dans un seul classeur ?
Oui, sachant que je n'est q'une feuille par classeur
C'est un peut plus clair ? :) sinon je re explique en détail.
Oui, sachant que je n'est q'une feuille par classeur
C'est un peut plus clair ? :) sinon je re explique en détail.
Modifié par tompols le 26/10/2012 à 15:18
26 oct. 2012 à 15:06
J'ai le même résultat, sans le message "0 classeurs regroupés avec 0 feuilles et 1 lignes"
26 oct. 2012 à 15:17
26 oct. 2012 à 15:19