Regrouper les données de plusieurs classeurs en un seul
EGAL68
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je travaille sur excel 2007. J'ai vu quelques post proches de ma question, mais je n'arrive pas à faire fonctionner le code.
Je dispose de plusieurs classeurs avec un seul onglet comportant 2 colonnes :
- colonne 1 avec le nom du champ (identique à chaque classeur)
- colonne 2 avec les informations recherchées (différentes pour chaque classeur)
Je souhaite récupérer les informations de la 2ème colonne de chacun de ces classeurs dans un classeur de synthèse avec :
- colonne 1 : avec le nom du champ (identique à chaque classeur)
- colonne 2 : les infos de la colonne 2 du classeur 1
- colonne 3 : les infos de la colonne 2 du classeur 2
etc....
J'imagine que je dois stocker mes classeurs sources, dans un même répertoire
Quel code puis je utiliser ?
D'avance merci pour vos réponses
Je travaille sur excel 2007. J'ai vu quelques post proches de ma question, mais je n'arrive pas à faire fonctionner le code.
Je dispose de plusieurs classeurs avec un seul onglet comportant 2 colonnes :
- colonne 1 avec le nom du champ (identique à chaque classeur)
- colonne 2 avec les informations recherchées (différentes pour chaque classeur)
Je souhaite récupérer les informations de la 2ème colonne de chacun de ces classeurs dans un classeur de synthèse avec :
- colonne 1 : avec le nom du champ (identique à chaque classeur)
- colonne 2 : les infos de la colonne 2 du classeur 1
- colonne 3 : les infos de la colonne 2 du classeur 2
etc....
J'imagine que je dois stocker mes classeurs sources, dans un même répertoire
Quel code puis je utiliser ?
D'avance merci pour vos réponses
A voir également:
- Regrouper les données de plusieurs classeurs en un seul
- Fuite données maif - Guide
- Comment regrouper plusieurs pdf en un seul - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Supprimer les données de navigation - Guide
- Comment regrouper des applications sur android - Accueil - Guide Android
5 réponses
Bonjour Egal, bonjour le forum,
Peut-être comme ça (à mettre dans le classeur de synthèse) :
À plus,
ThauTheme
Peut-être comme ça (à mettre dans le classeur de synthèse) :
Sub Macro1() Dim CD As Workbook 'déclare la variable CD (Classeur Destination) Dim OD As Worksheet 'déclare la variable OD (Onglet Destination) Dim CH As String 'déclare la variable CH (CHemin d'accès) Dim SF As Object 'déclare la variable SF (Système de Fichiers) Dim D As Object 'déclare la variable D (Dossier) Dim EF As Object 'déclare la variable EF (Ensemble de Fichiers) Dim F As Object 'déclare la variable F (Fichier) Dim CS As Workbook 'déclare la variable CS (Classeur Source) Dim OS As Worksheet 'déclare la variable OS (Onglet Source) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Application.ScreenUpdating = False 'masque les rafraîchissements d'écran Set CD = ThisWorkbook 'définit le classeur CD CH = CD.Path & "\" 'définit le chemin d'accès CH Set OD = CD.Sheets(1) 'définit l'onglet destination OD Set SF = CreateObject("Scripting.FileSystemObject") 'définit le système de fichiers SF Set D = SF.GetFolder(CH) 'définit le dossier D Set EF = D.Files 'définit l'ensemble des fichiers EF For Each F In EF 'boucle sur tous les fichier F de l'ensemble des fichiers EF If F.Name <> CD.Name And Left(Split(F.Name, ".")(1), 3) = "xls" Then 'condition si le fichier n'est pas celui-ci et si son extension commence par "xls" Workbooks.Open F 'ouvre le fichier Set CS = ActiveWorkbook 'définit le classeur source CS Set OS = CS.Sheets(1) 'définit l'onglet source OS Set DEST = OD.Cells(1, Application.Columns.Count).End(xlToLeft).Offset(0, 1) 'définit la cellule de destination DEST OS.Columns(2).Copy DEST 'copie la colonne 2 de l'onglet source et la colle dans DEST CS.Close False 'ferme le classeur source sans enregistrer End If 'fin de la condition Next F 'prochian fichier de la boucle Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran End Sub
À plus,
ThauTheme
Merci pour cette réponse. Je n arrive pas à faire fonctionner la macro.
tu écris CH= CD.Path&"/". Je ne comprends pas cette ligne. Dois je la modifier pour dire ou sont stockés les fichiers source? si oui Sous quel format ? J ai le sentiment que la macro n appelle pas les bons pour boucler.
Cordialement
tu écris CH= CD.Path&"/". Je ne comprends pas cette ligne. Dois je la modifier pour dire ou sont stockés les fichiers source? si oui Sous quel format ? J ai le sentiment que la macro n appelle pas les bons pour boucler.
Cordialement
Bonjour Egal, bonjour le forum,
La ligne en question :
récupère le chemin d'accès où se trouve le classeur de synthèse, en rajoutant à la fin le caractère antislash (\).
Cela implique que, comme tu le disais dans le premier post, tous les fichiers sources se trouvent dans le même dossier que le fichier de synthèse, sinon, ça ne marchera pas...
J'ai fait un rapide test chez moi avant de t'envoyer et je n'ai pas eu de bug...
La ligne en question :
CH = CD.Path & "/"
récupère le chemin d'accès où se trouve le classeur de synthèse, en rajoutant à la fin le caractère antislash (\).
Cela implique que, comme tu le disais dans le premier post, tous les fichiers sources se trouvent dans le même dossier que le fichier de synthèse, sinon, ça ne marchera pas...
J'ai fait un rapide test chez moi avant de t'envoyer et je n'ai pas eu de bug...
merci encore Thau Theme et désolé de te solliciter encore
J'ai écris :
CH = CD.Path & "C:\Users\Pierre\Documents\Macro\"
je ne comprends pas pourquoi ça ne passe pas ; Je dois mal écrire le chemin
j'ai enregistré la macro sous thisworkbook
J'ai écris :
CH = CD.Path & "C:\Users\Pierre\Documents\Macro\"
je ne comprends pas pourquoi ça ne passe pas ; Je dois mal écrire le chemin
j'ai enregistré la macro sous thisworkbook
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir Egal, bonsoir le forum,
Si ton classeur de synthèse se trouve dans le dossier :
C:\Users\Pierre\Documents\Macro
Alors CH va renvoyer son chemin (Path) donc :
C:\Users\Pierre\Documents\Macro
si en plus tu lui rajoutes : C:\Users\Pierre\Documents\Macro\, ça va donner à la fin :
C:\Users\Pierre\Documents\MacroC:\Users\Pierre\Documents\Macro\
donc ça va planter...
Soit tu utilises CD.Path qui renvoie le chemin d'accès du classeur CD (auquel on rajoute l'anti slash [\] à la fin, soit tu écris le chemin en dur : C:\Users\Pierre\Documents\Macro\ Mais pas les deux !
La macro na pas lieu d'être dans le composant ThisWorbook mais dans un module standard, Module1 par exemple...
Si ton classeur de synthèse se trouve dans le dossier :
C:\Users\Pierre\Documents\Macro
Alors CH va renvoyer son chemin (Path) donc :
C:\Users\Pierre\Documents\Macro
si en plus tu lui rajoutes : C:\Users\Pierre\Documents\Macro\, ça va donner à la fin :
C:\Users\Pierre\Documents\MacroC:\Users\Pierre\Documents\Macro\
donc ça va planter...
Soit tu utilises CD.Path qui renvoie le chemin d'accès du classeur CD (auquel on rajoute l'anti slash [\] à la fin, soit tu écris le chemin en dur : C:\Users\Pierre\Documents\Macro\ Mais pas les deux !
La macro na pas lieu d'être dans le composant ThisWorbook mais dans un module standard, Module1 par exemple...