Macro fusion plusieurs fichiers excel
Résoludébutante_ndl -
Je souhaite fusionner 6 fichiers excel en un seul.
Mes fichiers à fusionner s'appellent "C1, C2, C3, C4, C5 et C6.xls".
Chaque fichier comporte plusieurs onglet mais dans un 1er temps, seule l'onglet "Feuil1" est à récupérer, sans prendre l'en-tête (à partir de A2).
Les 6 fichiers évoluent régulièrement et indépendamment, le nombre de lignes change (pas le nombre de colonnes) il faut donc regrouper toutes les lignes les unes derrière les autres.
Le contenu de chaque ligne doit rester intact lors de la fusion (même si certaines cellules sont vides sur une ligne)
Le fichier final s'appelle "Global.xls".
Ces 7 fichiers se trouvent sous C:\test.
J'ai bien trouvé des posts à ce sujet mais je n'arrive pas à adapter les macros à ma demande.
N'ayant aucune connaissance en VBA, je perds beaucoup de temps..
Si quelqu'un pouvait m'envoyer un fichier excel avec une macro correspondante à mes noms de fichiers et emplacements, et le bouton qui l'exécute (en bonus!) ce serait génial !
Merci d'avance pour votre aide.
12 réponses
Le problème porte sur la fusion de six fichiers Excel, en ne récupérant que l’onglet Feuil1 à partir de la ligne A2 et en empilant les lignes sans modifier les colonnes. Des éléments de réponse montrent l’utilisation d’une macro capable de traiter les six fichiers et de produire Global.xls dans C:\test, avec exécution potentielle via un bouton et des ajustements sur les données. Plusieurs réponses évoquent l’extension au-delà de six fichiers, des erreurs de dépassement de capacité, ou la gestion de feuilles multiples et d’un éventuel filtrage par nom de fichier. En cas de besoin, des approches permettent aussi de regrouper chaque fichier sur un onglet distinct ou d’étendre la solution à des CSV et à des formats séparateurs.
-
Merci beaucoup gbinforme !!
çà a marché du 1er coup, incroyable !
Juste deux questions :
-Dans le fichier "Global", la macro récupère les 241 lignes de chacun des 6 fichiers.
Est-il possible de "coller" les données des 6 fichiers sans laisser de lignes vides entre 2 ?
(NB : le nombre de lignes est différent entre les 6 fichiers, et évolue d'une semaine à l'autre)
-j'avais pensé au bouton pour exécution de la macro car ensuite j'effectue des tableaux croisés dynamiques dans le fichier "Global", donc j'ai des feuilles qui restent fixes.
Je souhaite simplement actualiser la Feuil1 sans écraser les autres feuilles déjà existantes.
Est-ce possible ?
@+ -
bonjour
Voici un fichier excel "Global.xls"
- avec une macro correspondante à tes noms de fichiers (et emplacements : aucune importance),
- et le bouton qui l'exécute (en bonus!) : pas vraiment de bouton, car le regroupement s'effectue à l'ouverture.
https://www.cjoint.com/?BCzxn3oc359-
-
-
-
-
Bonjour gbinforme,
Je dois creer une macro qui va pouvoir creer un fichier .CSV à partir de plusieurs fichiers excel. En plus, elle devra être fonctionnel avec excel 2003 et excel 2010.
J'ai un document portant le nom de la date du mois, par exemple, "2014-08 ". à chaque mois je change de document, donc pour septembre le nom serait "2014-09".
Ce document contient environ 250 fichiers excel ayant tous un noms différents ( un nom par projet par exemple "QRYNF.xls", "QRYNG.xls" , etc. ).
i = 1 to nbr_de_projets
OTP = WB_GP.Sheets(i).Range ("A1")
nom des fichiers suit la régle : OTP.xls
Chaque fichier excel contient deux onglets, un onglet "GP" et un onglet "Couts".
En premier, je dois avoir un bouton qui me permettra d'effectuer la macro, puisque je dois seulement transférer les données 1 fois par mois.
Ce bouton devra créer dans le document du mois courant un fichier nommé "Commentaires.csv"
Je dois copier dans le fichier "Commentaires.csv" seulement une partie de l'onglet "GP" de chaque fichiers excel. Cette partie ne commence pas à une ligne fixes et ne se termine pas à une ligne fixe, par contre le nombre de colonnes reste le même pour chaque projet. J'utilise déjà une variable pour debut du tableau commentaire et la fin du tableau commentaire dans chaque fichier excel : "Zone_Commentaires"
En plus, il faut avoir une colonne supplémentaire, ayant le nom du projet "A1" d'où viennent les commentaires.
Pouvez vous m'aider à personnaliser votre code pour que cela fonctionne, s'il vous plait ! J'apprécierais grandement.
Merci Beaucoup.
-
-
Bonjour,
ça marche à merveille.
Merci beaucoup et bon courage gbinforme. -
Bonjour,
Je souhaiterais dans le même principe fusionner mes différents tableau et que du coup à l'ouverture de mon fichier global, les données ce mettent à jour.
Apparement ce qui est fait avant marcherai dans mon cas. Or, je n'arrive pas à l'ouverture du fichier télécharger a récupérer la macro créer.
Est-il possible de me faire une copie ici du code de la macro que je l'adapte à mon besoin-
Bonjour derobeames,
Apparement ce qui est fait avant marcherai dans mon cas
C'est-à-dire ? Je ne vois pas bien le sens ?
Est-il possible de me faire une copie ici du code de la macro
La macro est dans le classeur, à l'open, non cachée et totalement accessible : il te suffit de regarder. Si tu n'arrives pas à la trouver tu auras peut-être du souci pour la modifier.
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Je suis désolé mais lorsque je récupère le fichier et que je vais dans macro, aucune ne s'affiche.
Est-ce le fait que je sois sur Excel 2010?
Je souhaite l'adapter à mon besoin qui est de faire le même regroupement avec tous les fichiers Excel du répertoire que je vais choisir moi-même.
Si quelqu'un arrive à ouvrir cette macro, au pire un copier-coller du texte m'irait parfaitement !
Merci d'avance.-
-
-
-
Ah oui effectivement... Merci
En revanche, je n'arrive pas à corriger pour mon besoin. Je voudrais pouvoir choisir moi-même, au lancement de la macro, le répertoire dans lequel récuperer les fichiers !
Une idée? Sachant que sur une autre requête, j'utilisais :
ndp = FindWindow32("XLMAIN", Application.Caption)
rep = rech_rep(ndp, "Choisissez le répertoire à regrouper") -
-
-
Bonjour,
Ton fichier "BCAxswLpCvy" s'exécute très bien mais j'aurais quelques modifications à y intégrer et j'espère que tu pourras m'aider :
- En mettant "C?.xls" et des fichiers commencant par C sa marche mais dés que j'essaye de mettre "*.xls" (car j'ai des noms différents pour tous) cela ne fonctionne pas.
- Est ce possible de faire la même chose avec des fichiers .csv et d'y integrer un format de séparateur de champ (,) lors du transfert
- Est ce possible de mettre à jour le fichier destination en fonction si des fichiers ont été rajouté dans le répertoire et dans ce cas les incrémenter au fichiers destination.
J'espère avoir été clair.
Merci d'avance-
Bonjour boston2001 et bienvenue
j'essaye de mettre "*.xls" ... cela ne fonctionne pas.
Aucune raison que cela ne fonctionne pas mais si tu as des classeurs 2007/2010, il faut mettre "*.xl*)
la même chose avec des fichiers .csv
C'est possible mais le fonctionnement est différent pour obtenir les cellules séparées.
Est ce possible... les incrémenter au fichiers destination
Tout est possible mais la fonction n'a rien à voir : celle qui était demandée récupère les fichiers à un instant et si tu la refais 3 jours plus tard tu auras le nouvel état avec les nouveaux fichiers et sans ceux qui ont été supprimés.
Si tu veux faire un historique, il faut d'abord un cahier des charges exhaustif car les variantes sont infinies.
-
-
Bonjour gbinforme,
Ton fichier marche nikel mais j'aimerais bien le modifier un peu pour qu'il copie chaque fichier sur un onglet différent du fichier Global avec si possible comme nom d'onglet, le nom du fichier copié. Est ce que tu pourrais m'éclairer ?
Merci-
Bonjour foufy59,
Voici le classeur de regroupement qui copie chaque classeur du répertoire dans un onglet différent nommé à l'identique :
https://www.cjoint.com/c/CHiwNfvIhuQ
Le premier onglet fait la liste des classeurs regroupés avec lien sur l'onglet concerné. Attention au nom des classeurs car les noms d'onglets sont limités en longueur avec certains caractères non autorisés.
Bon tests.
-
-
slt,
merci d'abord pour ce travail car ça me parait pas super simple pour un novice comme moi ^^
j'ai donc essayé ta macro et j'ai un souci
j'ai dans le premier onglet le calcul qui ce fait bien avec la copie des noms de fichier avec le nombre de ligne
mes onglets données qui sont bien repris
donc ma question c'est :
est il possible d'avoir quand même l'onglet récap avec toute les données ?
car j'arrive pas à combiner tes 2 macros ^^ (oui je sais je suis nul) -
Bonjour gbinforme,
Déjà merci pour ta précieuse aide avec la macro.
J'ai utilisé Ton fichier "BCAxswLpCvy". Cependant, impossible de changer "C?.xls" par "*.xls" .
J'ai pu, à l'aide d'une autre de tes macros, faire le changement voulu; comme ceci:
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("JU HEP BEJUNE - Médiathèque de ")
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 -
bonjour,
la macro en fichier joins ne marche, plus.
serait il possible de l'avoir de nouveau.
Je voudrais fusionner plusieurs fichier xlsx qui contienne 5 feuille chacun en un seul fichier.
Merci -
Bonjour,
Est'il possible de fusionner les fichiers même si les feuilles ont des noms différents? -
bonjour,
Est-il possible de "coller" les données des 6 fichiers sans laisser de lignes vides
La macro ne laisse pas de lignes vides et si tu as des lignes vides c'est qu'elles sont dans tes fichiers (peut-être avec une mise en forme ou autre) : j'ai tout de même supprimé les lignes vides existantes.
Je souhaite simplement actualiser la Feuil1 sans écraser les autres feuilles déjà existantes. Est-ce possible ?
La macro ne touche que la Feuil1 (qui doit exister) et les autres feuilles peuvent être présentes sans problème.
j'avais pensé au bouton pour exécution de la macro
Si tu veux, mais quel est l'intérêt du bouton puisque la fonction est effectuée à l'ouverture ?
https://www.cjoint.com/?BCAxswLpCvy-
-
-
-
-
Bonjour gbinforme,
Pourriez-vous m'aider à personnaliser le fichier final avec mes propres noms de fichiers Excel et leurs emplacements?
J'ai des dossiers par année/mois/jour où le fichier s'appelle 01012012.csv/02012012.csv/03012012.csv etc...
Que dois-je modifier et où?
Je suis novice en macro.
Merci.
Manu
-