rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Réunir plusieurs fichiers EXCEL dans 1 seul

Posté par ttjeremy, le mercredi 5 mars 2008 à 11:36:57
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
Répondre à ttjeremy  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 6 mars 2008 à 21:54:55
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le lundi 10 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rourouriri, le mardi 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mardi 6 mai 2008 à 21:53:39
bonjour

regardes : http://cjoint.com/?eDjIREmEAL
Toujours zen
Répondre à gbinforme

21


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rourouriri, le mercredi 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

3


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le lundi 10 mars 2008 à 11:43:56
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le lundi 10 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le lundi 10 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le mardi 11 mars 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


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le mardi 11 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le mercredi 12 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le jeudi 13 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le vendredi 14 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 14 mars 2008 à 10:02:07
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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le vendredi 14 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 14 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le vendredi 14 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 14 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le mardi 18 mars 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
caucasiane, le mardi 15 avril 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
ttjeremy, le mardi 15 avril 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
DelphineG, le vendredi 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
gbinforme, le vendredi 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
mariafan, le vendredi 6 juin 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rourouriri, le vendredi 6 juin 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


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 first_try, le mardi 17 juin 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