Rechercher : dans
Par :

Réunir plusieurs fichiers EXCEL dans 1 seul

Dernière réponse le 6 mai 2009 à 12:52:14 ttjeremy, le 5 mar 2008 à 11:36:57 
 Signaler ce message aux modérateurs

Bonjour,

j'ai un soucis Sur Excel.

Voila, j'ai Soixante fichiers excel de forme identique avec 5 à 6 onglets toujours de forme identique. (Ne demandez pas pourquoi c'est pour le TAF)

Ces fichiers ne se trouvent pas forcément dans le même dossier et ne sont pas en nombre identiques

Exemple:

DossierA : Dossier1,dossier2,dossier3,dossier4.....

Dossier1 : Exel1
Dossier2 : Excel2,Excel3
Dossier3 : Excel4,Excel5,Excel6
Dossier4 : Excel7,Excel8

Connaissez-vous une macro capable de tout me copier dans un Seul fichier Excel (Tout les fichiers les uns en dessous des autres) en indiquant le fichier dont l'info provient ainsi que l'onglet d'origine)

That is your challenge !!! Good Luck

PS : Je suis débutant en Macro, essayez d'expliquer simplement ou de me donner la macro entière.

Configuration: Windows XP
Internet Explorer 6.0

1

gbinforme, le 6 mar 2008 à 21:54:55
  • +1

Bonjour ttjeremy,

Connaissez-vous une macro capable de tout me copier dans un Seul fichier Excel (Tout les fichiers les uns en dessous des autres) en indiquant le fichier dont l'info provient ainsi que l'onglet d'origine)
That is your challenge !!! Good Luck


Bon comme personne ne se précipite sur ta question, je relève le "challenge".

Dans ce fichier, je t'ai mis un classeur prêt à fonctionner et le module macro que tu peux importer dans ton classeur :
http://cjoint.com/?dgvPyWen8b

Tu peux sélectionner ton "DossierA" et tous les classeurs de tous les sous répertoires seront concaténés avec le chemin du fichier d'origine, l'onglet d'origine, le nombre de lignes et le nombre de colonnes.

Si tu dépasses le nombre de lignes maximum de la feuille, on passe sur une nouvelle feuille.

Si tes fichiers ont des plages ou des fonctions avec le même nom, il y a un message excel pour le signaler à chaque double et il faut renommer pour que ton classeur fonctionne.

Essaies d'abord sur un petit dossier pour voir le fonctionnement et bon test.
Toujours zen

Répondre à gbinforme

2

ttjeremy, le 10 mar 2008 à 09:53:03

Bonjour,

Je suis très satisfait de la macro. Je vous en suit reconnaissant.

J'ai tout de même un petit soucis.

Dans chaque fichier, j'ai oublié de mentionné qu'il y avait deux onglets qui ne devait pas faire partir de cette liste.

Pour chaque fichier, il y a une page de garde que l'on imprime pour faire signer des vérificateurs.
Il y a aussi un glossaire.

Ces deux onglets s'intitulent "P de Garde" et "Définition des colonnes"

Connaissez-vous un moyen de ne pas les mettre dans le "Global_classeur"?

Merci d'avance et en core merci pour la macro.

Cordialement,
Ttjeremy

Répondre à ttjeremy

19

rourouriri, le 6 mai 2008 à 12:03:02

Bonjour

Ayant le même problème que 'ttjeremy' je tenais juste a demander le code pour voir si ça va marcher dans mon cas, j'ai essayé de le récupérer de l'adresse http://cjoint.com/?dgvPyWen8b mais on me dit que l'adresse est introuvable

Merci d'avance

Répondre à rourouriri

20

gbinforme, le 6 mai 2008 à 21:53:39

Bonjour

regardes : http://cjoint.com/?eDjIREmEAL
Toujours zen

Répondre à gbinforme

21

rourouriri, le 7 mai 2008 à 09:39:02

Bonjour,

Merci pour votre aide mais a vrai dire c'est pas ce que je cherche exactement, si tu veux, ce que je souhaite avoir à la fin est en fait 3 feuilles (par exemple) dans un seul classeur c'est à dire avoir à la fin 3 feuilles (feuil1, feuil2, feuil3) dans un même classeur, si tu sais quoi que se soit informe moi parce que j'ai vraiment besoin de ce code

Merci encore pour le code que tu m'as fillée

Répondre à rourouriri

28

ludovic, le 15 sep 2008 à 14:52:24

G le même souci , mais le liens n'est plus valide , peux tu m'aider stp

merci bcp

Répondre à ludovic

29

aramis, le 16 nov 2008 à 20:41:30

Bonjour

J'ai le même souci à savoir pour des raisons professionnelles j'ai besoin de compiler plusieurs fichiers excel en un seul.
Je voudrai consulter le fichier que vous avez créé pour m'en inspirer dans la création de la macro de compilation, mais il n'est plus accessible par le lien sur le site.
Pourriez-vous le rendre à nouveau accessible ?

Un grand merci d'avance

Répondre à aramis

30

gbinforme, le 16 nov 2008 à 22:02:47

Bonjour

Il est présent sous une version récente ici
Toujours zen

Répondre à gbinforme

31

aramis, le 16 nov 2008 à 23:36:13
  • +1

Merci pour ce retour rapide.
Bonne soirée

Répondre à aramis

3

gbinforme, le 10 mar 2008 à 11:43:56
  • +1

Bonjour

Dans chaque fichier, j'ai oublié de mentionné qu'il y avait deux onglets qui ne devait pas faire partir de cette liste.

Connaissez-vous un moyen de ne pas les mettre dans le "Global_classeur"?


Il y a toujours des exceptions pour tout traitement alors autant les mettre en paramètre.

J'ai mis cette ligne dans la macro et il suffit de rajouter d'autres feuilles pour les exclure éventuellement :

exclus = Array("P de Garde", "Définition des colonnes")

Le classeur corrigé est ici : http://cjoint.com/?dklLFvOwSp
Toujours zen

Répondre à gbinforme

4

ttjeremy, le 10 mar 2008 à 18:03:06

Re bonjour,

La macro est presque parfaite.

Après l'exécution, il me reste quelques manip à faire mais comparé au temps que vous m'avez fait gagner, cela ne représente rien.

Je vous remercie beaucoup. Heureusement qu'il y a des personnes comme vous pour faire avancer le chmilblick.

Encore Merci.

Cordialement,
Ttjérémy

Répondre à ttjeremy

5

gbinforme, le 10 mar 2008 à 18:12:06

Bonjour

Après l'exécution, il me reste quelques manip à faire

Si tu me dis en quoi elles consistent, elles peuvent peut-être être intégrées facilement.

Selon le style de classeur, le résultat est parfois différent.
Toujours zen

Répondre à gbinforme

6

ttjeremy, le 11 mar 2008 à 18:25:28

Bonjour,

Les quelques petits soucis concernent simplement toutes les lignes vides qui s'incorporent dans le fichier "Global classeur"

Si tu veux que je sois encore plus précis sur mon besoin,

le fichier global devrait :

- copier les deux premières lignes qu'une seule fois (normal, il s'agit de la légende des colonnes).

- comporter une colonne supplémentaire avec comme info le nom du fichier d'origine ainsi que l'onglet pour chaque ligne. (Si possible, 1ere colonne)

Pour synthétiser, tous les fichiers groupés dans le "global classeur" doivent ne former qu'un seul fichier avec leur provenance (traçabilité) qui servira à centraliser les informations pour mieux les traiter par la suite.

Pour moi travailler,

il est préférable que je puisse lire les informations sur un seul fichier. J'ai en tout 11000 lignes à gérer a terme. la provenance de l'information est importante pour gagner du temps.
Par la suite, si j'avais des liens hypertexte sur cette provenance, ce serait le ponpon.

Si tu penses pouvoir faire tout cela, je laisse libre court a ton ingénieusité, mais je te rassures, tu en as déjà fait beaucoup pour moi.

Répondre à ttjeremy

7

gbinforme, le 11 mar 2008 à 18:55:03

Bonjour

Ce n'est pas tout à fait ce qui était dans le sujet initial mais c'est normal que le projet évolue en fonction des résultats obtenus.

Il me manque quelques réponses encore :
- y a-t-il lieu de copier les formats de fond, de couleurs et autres ?
- le nom du fichier d'origine est-il simplement le nom du classeur ?
- doit-on tenir compte du chemin complet ou simplement du relatif par rapport au global ?
- le nom de l'onglet sur la colonne B n'est-ce pas mieux ?
- le lien hypertexte serait sur la première colonne ?
- y-a-t-il des formules dans les classeurs ?
- y-a-t-il des zones nommées dans les classeurs ?

Cela permettra d'adapter le code à ta problématique.
Je suppose que tu crées un nouveau classeur à chaque fois, faut-il initialiser totalement le classeur ?
Toujours zen

Répondre à gbinforme

8

ttjeremy, le 12 mar 2008 à 10:21:42

Bonjour,

Il me manque quelques réponses encore :

- y a-t-il lieu de copier les formats de fond, de couleurs et autres ? Il faut garder au minimum les couleurs des lignes et les formules.

- le nom du fichier d'origine est-il simplement le nom du classeur ? Oui tout simplement

- doit-on tenir compte du chemin complet ou simplement du relatif par rapport au global ? Le relatif par rapport au global est suffisant

- le nom de l'onglet sur la colonne B n'est-ce pas mieux ? Cela n'a pas d'importantce

- le lien hypertexte serait sur la première colonne ? Pourquoi pas, ça peut être une bonne idée

- y-a-t-il des formules dans les classeurs ? oui tout à fait, elles sont d'ailleurs importantes.

- y-a-t-il des zones nommées dans les classeurs ? Non


J'espère avoir répondu correctement à tes questions.

Merci de m'aider.

Cordialement,
Ttjeremy

Répondre à ttjeremy

9

gbinforme, le 13 mar 2008 à 20:41:47

Bonjour

Merci de la précision des réponses et tu peux essayer cette version : http://cjoint.com/?dnuJh6bpkj

Le lien hypertexte est mis sur la première ligne de l'onglet afin de ne pas surcharger la première colonne mais il est possible de le recopier facilement.
Toujours zen

Répondre à gbinforme

10

ttjeremy, le 14 mar 2008 à 09:39:18

Bonjour,

Les différentes collonnes rajoutées fonctionnent mais par rapport à la version d'avant, il y a un gros soucis.

La macro ne copie que 16 fichiers sur 30.

Je ne sais pas pourquoi.

Cordialement,
Ttjeremy

Répondre à ttjeremy

11

gbinforme, le 14 mar 2008 à 10:02:07
  • +1

Bonjour

N'as-tu pas un fichier sans données ?
Comme l'on saute les 2 premières lignes maintenant...

Essaies de changer cette ligne

On Error GoTo fin
par
'On Error GoTo fin

S'il y a une erreur tu verras où elle se produit.
Toujours zen

Répondre à gbinforme

12

ttjeremy, le 14 mar 2008 à 10:19:45

Voici le message d'erreur :

Erreur d'execution '1004'

Impossible de coller les informations car les Zones copier et de collage sont de forme et de taille différentes. Essayez l'unes des opérations suivantes :

- Cliquez sur une cellule puis collez
- Sélectionnez une Zone rectangulaire de taille et de forme identiques à celles des informations puis collez.

En faisant débogage, il y a une ligne de la macro qui se surligne en jaune.

Cells(l, 1).Resize(nbl, c).Copy Destination:=Wf.Cells(ligne, 2)

Répondre à ttjeremy

13

gbinforme, le 14 mar 2008 à 10:35:03

Bonjour

Je viens d'essayer avec une feuille vide et cela fonctionne.

Peux-tu regarder la feuille concernée car elle doit être enregistrée en fin de fichier et voir les particularités.

La ligne concernée copie les données sur une seule cellule destinataire et tu ne devrais pas avoir ce message.

As-tu démarré ta concaténation sur une feuille vide ?
Toujours zen

Répondre à gbinforme

14

ttjeremy, le 14 mar 2008 à 11:13:29

C'est bon,

J'ai ré-enregistré le fichier. tout va bien.

Par contre il y a toujours les lignes vides qui se mettent dans le "global classeur"

Répondre à ttjeremy

15

gbinforme, le 14 mar 2008 à 14:10:54

Bonjour

En fait cela venait que ton classeur était censé utiliser 256 colonnes et pour les mettre dans 255 : problème.

Cela vient de la propriété usedrange qui est bien utile mais ne donne pas toujours des résultats adéquats.

C'est corrigé ainsi que les lignes vides qui venaient du même problème. S'il en reste vérifies qu'il n'y ait pas des espaces dans une cellule : http://cjoint.com/?dooeWnJHZw

Bon test et bon courage !
Toujours zen

Répondre à gbinforme

16

ttjeremy, le 18 mar 2008 à 10:38:21

Bonjour,

J'ai effectué le Test.

Les lignes vignes n'ont pas disparus mais il faut que je vérifie si elles ne contiennent pas d'espaces.

Merci pour ton aide.

Cordialement,
Ttjeremy.

Répondre à ttjeremy

17

caucasiane, le 15 avr 2008 à 12:14:34

Bonjour,
Je ne sais pas si c'est possible mais j'aimerais compiler dans une seule feuilles des données qui sont dans 2 feuilles différentes mais que j'ai réuni dans un seul fichier.
Au départ, je me suis demandée s'il ne fallait pas créer un TCD, mais je pense qu'une macro serait plus conseillée. Je pourrais être amenée à changer les feuilles 2 et 3(tout en gardant la même disposition de colonnes !) à cause de différentes mise à jour que je doive effectuées sur une base de données, je ferai alors une extraction de cette base sous excel et donc amenée à enregistrer cette nouvelle base de données dans le classeur correspondant à la place des feuilles 2 et 3.
Dans un premier temps, il faudrait que je puisse faire apparaître dans une feuille 1 toutes les données de la feuille 2 (19 colonnes et nombre de lignes variables en fonction de la mise à jour) et compiler les données de la feuille 3 (6 colonnes et nombre de lignes différentes de la feuille2), en fonction des critères de la feuille 2 : colonne B, C et S. Il peut arriver qu'en fonction du numéro dans la colonne S, un doublon de nom prénom se forme en colonne B et C. Il faut donc qu'une nouvelle ligne se forme.
Je suis nulle en macro et je demanderai donc à celui qui voudra bien me renseigner de me donner le chemin à suivre, pas à pas...
En vous remerciant par avance, bon courage...

Répondre à caucasiane

18

ttjeremy, le 15 avr 2008 à 15:37:05

Bonjour,

Si tu suis l'historique des conversations, tu pourras y trouver une macro qui réalisera ton souhait.

Tu pourras ainsi remercier son créateur.

Répondre à ttjeremy

22

DelphineG, le 30 mai 2008 à 15:46:55

Bonjour,

J'ai un fichier Excel comportant environ 40 onglets de paramétrage et j'aimerais obtenir un autre fichier Excel comportant toutes les donnees de mes 40 onglets. Je n'y connais rien en macro et mais il me semble que le programme de gbinforme pourrait faire ça aussi mais je n'arrive pas à le trouver.

Ce serait vraiement super ! Ca m'eviterais de faire chaque semaine les 40 copier-coller et surtout de ne plus oublier d'inserer un onglet. Après c'est trop la galère

Merci d'avance pour votre aide,
Cordialement,
Delphine

Répondre à DelphineG

23

gbinforme, le 30 mai 2008 à 23:03:45

Bonjour DelphineG,

il me semble que le programme de gbinforme pourrait faire ça aussi

Ce n'est pas du tout le même problème car la macro concernée était destinée à globaliser un répertoire pour faire une analyse des données.

En ce qui te concerne, c'est plus simple puisque tu n'as qu'un seul classeur avec plusieurs onglets et donc la procédure n'a rien à voir.

Ton nouveau classeur comporte combien d'onglets ?

Le collage de chaque onglet se fait-il à la suite du précédent sur le même onglet ?

Tes données ont-elles des plages nommées ?

As-tu des formules ou uniquement des données saisies ?

Si tu explique un peu plus précisément, cela devrait être réalisable.
Toujours zen

Répondre à gbinforme

24

mariafan, le 6 jun 2008 à 14:57:40

J'ai le même souci pour réunir plusieurs fichiers excel dans un seul. Mais j'arrive à accéder aux leins précédemment utiliser. Est ce quelqu'un peut m'nvoyer le code.
Merci d'avance.

Répondre à mariafan

25

rourouriri, le 6 jun 2008 à 15:14:50

Bonjour,

je sais pas si c'est ce code là qui te faut mais je te le fille au cas ou

Sub FusionDsFeuille()

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, "salut") 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(6, 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, "coucou") Or InStr(Wbk.Name, "psss") 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, 4).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(6, 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

Répondre à rourouriri

26

first_try, le 17 jun 2008 à 21:10:53

Bonjour ts le monde, svp j'ai besoin de la macro qui permet de concatener les fichiers excel qui ont la même structure

c super urgent. d'avance merci

Répondre à first_try

27

Steve, le 12 sep 2008 à 01:04:35

Utiliser un fichier de batch : FetchCSVbatch se trouve sur google, petit macro à manipuler
Pour les reste les liens ci-dessus ne fonctionnent pas du tous

Répondre à Steve

32

jokeystar, le 4 mai 2009 à 12:45:05

Bonjour j'ai le mémé soucis que (Réunir plusieurs fichiers EXCEL dans 1 seul
ttjeremy, le mercredi 5 mars 2008 à 11:36:57) mais j'ai pas trouvé le fichier sur le lien. ça sera gentille de me le filé merciii

Répondre à jokeystar

33

gbinforme, le 4 mai 2009 à 19:06:02

Bonjour

Si tu regardes le poste 30 tu as bien un classeur.
Toujours zen

Répondre à gbinforme
Collection CommentÇaMarche.net