Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Consolider les données de plusieurs classeurs en un seul

Yvan1

XLDnaute Occasionnel
Bonjour,
J'ai 3 classeurs de données que je souhaite consolider dans un 4è classeur.
Dans ce 4è classeur, il faut sur la feuille 1 :
- Récupérer les 2 premières colonnes du 1er classeur, et les coller sur la feuille 1 du classeur 4
- Récupérer la 2è colonne du 2è classeur, et la coller en 3è colonne du 4è classeur,
- Récupérer la 2è colonne du 3è classeur, et la coller en 4è colonne du 4è classeur
Puis sur la feuille 2 :
- Récupérer la première et la 3è colonnes du 1er classeur, et les coller sur la feuille 2 du classeur 4
- Récupérer la 3è colonne du 2è classeur, et la coller en 3è colonne du 4è classeur,
- Récupérer la 3è colonne du 3è classeur, et la coller en 4è colonne du 4è classeur
Puis sur la feuille 3 :
- Récupérer la première et la 4è colonnes du 1er classeur, et les coller sur la feuille 3 du classeur 4
- Récupérer la 4è colonne du 2è classeur, et la coller en 3è colonne du 4è classeur,
- Récupérer la 4è colonne du 3è classeur, et la coller en 4è colonne du 4è classeur
J'ai tenté de créer les requêtes, mais les données récupérées sont collées sur une nouvelle feuille, et non là où je le souhaite.
Je vous joins les classeurs "sources", qui doivent alimenter le 4è classeur. Ils sont identiques dans leur structure. Seules les données changent.
Je précise que ces classeurs sont alimentés quotidiennement.
Dans l'attente de votre aide,
Merci d'avance,
 

Pièces jointes

  • Ent A.xlsm
    8.6 KB · Affichages: 6
  • Ent B.xlsm
    8.6 KB · Affichages: 4
  • Ent C.xlsm
    8.6 KB · Affichages: 4

Yvan1

XLDnaute Occasionnel
Bonsoir,
Bon, visiblement Excel 2013 ne permet pas la mise à jour à l'ouverture.
Concernant T_Recup, quand je clique sur le bouton d'actualisation, j'ai le message suivant qui s'affiche : "Vous ne pouvez pas actualiser une requête de connexion seule".
Chronologiquement, il faut mettre à jour la requête T_Recup, puis les autres... Ou est-ce que T_Recup s'actualise automatiquement à l'ouverture ?
A plus tard,
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Lorsque tu sélectionnes une cellule d'une requête quelconque, est-ce que tu as ces rubans?

Si oui, en cliquant sur "Requête", est-ce que tu as ce choix?

Si oui, en cliquant sur "Propriétés", est-ce que tu as ce choix?

Comme tu peux le voir, ici, je peux valider la mise à jour à l'ouverture du fichier...
Sinon, en cliquant dans le ruban "Données", "Actualiser tout", tu mets toutes les requêtes à jour...
Lorsque tu mets une seule requête à jour, la requête principale se met à jour automatiquement
Bonne journée
 

Yvan1

XLDnaute Occasionnel
Bonjour Cousinhub,
Ok pour la mise à jour à l'ouverture.
J'ai également compris le principe de requête en connexion uniquement.
Par contre, dans mon cas précis, les fichiers à agréger ne sont pas dans le même dossier (imaginons qu'ils se trouvent en Dossier 1, Dossier 2 et Dossier 3).
Quelles modifications cela entraine sur la requête en connexion ?
Merci d'avance,
Yvan
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Dans la V2, j'ai mis trois cellules à remplir dans l'onglet "Paramètres"
Tu entres le chemin des dossiers 1, 2 et 3 dans ces cellules, et la requête "T_Global" combine les 3 fichiers...
Si ça te va
 

Pièces jointes

  • Import Yvan_V2.xlsx
    26.7 KB · Affichages: 3

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Dans le code (Éditeur Power Query, clic sur la requête à gauche nommée "T_Global", puis Onglet "Accueil", en cliquant sur "Éditeur avancé"), tu peux voir la requête :
PowerQuery:
et
    Source1 = Folder.Files(Excel.CurrentWorkbook(){[Name="CheminFichierA"]}[Content]{0}[Column1]),
    Source2 = Folder.Files(Excel.CurrentWorkbook(){[Name="CheminFichierB"]}[Content]{0}[Column1]),
    Source3 = Folder.Files(Excel.CurrentWorkbook(){[Name="CheminFichierC"]}[Content]{0}[Column1]),
    Source = Table.Combine({Source1, Source2, Source3}),
    //Je fais le filtre ci-dessous, et prend les fichiers commençant par "Ent"
    Filtr = Table.SelectRows(Source, each Text.StartsWith([Name], "Ent")),
    Transform = Table.TransformColumns(Filtr, { "Content", each Excel.Workbook(_, true )}),
    Expand1 = Table.ExpandTableColumn(Transform, "Content", {"Data", "Kind"}, {"Data", "Kind"}),
    Selections = Table.SelectRows(Expand1, each ([Kind] <> "DefinedName") and Text.Contains([Extension], "xls")) [[Name],[Data]],
    Expand2 = Table.ExpandTableColumn(Selections, "Data", Table.ColumnNames(Selections[Data]{0}), Table.ColumnNames(Selections[Data]{0})),
    ModType = Table.TransformColumnTypes(Expand2,{{"Date", type date}}),
    ExtNom = Table.TransformColumns(ModType, {{"Name", each Text.BeforeDelimiter(_, "."), type text}})
in
    ExtNom

Et le commentaire, juste avant l'étape "Filtr" te signale comment je choisis les fichiers qui m'intéressent.
On peut adapter, mais il faut qu'on puisse reconnaître le fichier qui va bien dans chaque répertoire.
Si tu as d'autres impératifs, donne-les de suite, qu'on ne tourne pas en rond indéfiniment...
Bonne fin d'apm
 

Yvan1

XLDnaute Occasionnel
Non, non, ça me convient parfaitement. J'avais juste un doute, mais à la lecture du code, j'avais compris avant que tu ne me fasses ta réponse.
La racine des différents fichiers étant la même, le principe du filtre est ok.
Par contre, je veux bien que tu m'expliques, à quel endroit tu indiques sur quel onglet la requête doit s'effectuer ?
Merci d'avance,
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Euh, ben je ne fais aucun choix, pour moi, il n'y avait qu'un onglet par fichier....(tel que posté dans ta demande...)
S'il y a en plusieurs, il va falloir déterminer un filtre quelconque...
Combien d'onglets par fichier?
Est-ce que les données à traiter sont toujours dans le 1er onglet?
 

Yvan1

XLDnaute Occasionnel
Salut Cousinhub,
Je suis en train d’appliquer mon exemple à un cas concret, mais je m’aperçois que mes fichiers ont plusieurs onglets, et qu’un seul doit être extrait par la requête . Comment faire ?
Merci d’avance,
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Je pense que le mieux serait que tu mettes 1 fichier exemple, avec la structure réelle, et si présence de Tableaux Structurés, ces Tableaux avec leurs noms..
Ainsi que les noms d'onglet, leur position, bref, ce qui pourrait déterminer l'onglet à traiter par fichier..
Ou si tu as déjà le nom de l'onglet (par fichier), tu le donnes, je ferai des essais (en modifiant peut-être le mode opératoire)
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Avec la fonction fournie par Chris dans ce fil
Dans l'onglet "Paramètres", tu mets la liste des fichiers (Chemin + Nom du fichier), la fonction extrait les Datas des onglets nommés "CA N), puis traitement identique à la V2.
Bon dimanche
 

Pièces jointes

  • Import Yvan_V3.xlsx
    27.4 KB · Affichages: 4

Discussions similaires

Réponses
14
Affichages
358
Réponses
5
Affichages
441
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…