Power Query regrouper des données de plusieurs onglets
Résolu/Fermékeshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 - 25 oct. 2023 à 10:02
- Power Query regrouper des données de plusieurs onglets
- Power query download - Télécharger - Tableur
- Comment regrouper des pdf - Guide
- Restaurer onglets chrome - Guide
- Power iso 32 bits - Télécharger - Gravure
- Regrouper plusieurs feuilles excel en une seule - Guide
4 réponses
14 oct. 2023 à 16:12
Bonjour,
Dans le fichier joint, une solution Power Query
Dans l'onglet "Recap", la requête (colonne B), le chemin et le nom du fichier (récupéré par le biais d'une formule) dans la cellule K1 ainsi que le nom des en-têtes des colonnes sous forme de Tableau Structuré en colonne J
Tu vérifies tout d'abord que :
- La formule donne bien le bon chemin et nom dans ton fichier
- Ton fichier ne comporte que les onglets de tes recettes et l'onglet "Recap" (sinon, il faudra modifier le filtre de la 2ème étape dans la requête)
- Comme il ne s'agit pas de requête "interne", mais "externe", il faut absolument qu'avant d'actualiser le Tableau final, tu aies effectué l'enregistrement du fichier après modifications et/ou ajouts d'onglets...(Ctrl + S)
Regarde si ça te convient
Bonne journée
https://www.cjoint.com/c/MJoomoRTSU2
15 oct. 2023 à 13:19
Bonjour,
Dans cette deuxième version, à la deuxième étape, j'ai rajouté la colonne "Name" afin de récupérer le nom de la recette.
Et à la dernière (le GoupBy), je combine toutes les recettes en fonction des produits
Bon dimanche
https://www.cjoint.com/c/MJpltrebgp2
15 oct. 2023 à 13:30
Re-,
Pour faire "plus propre", et quitte à pouvoir définir les noms de colonnes par le biais du TS (T_Titres), remplace la dernière étape "GoupBy" par ce code (à mettre dans la barre de formules lorsque tu sélectionnes cette dernière étape)
= Table.Group(RenameCol, {"code produit", "Dénomination", "Etat du produit"}, {{T_Titres{2}, each List.Sum([Quantité Totale en GRS]), type nullable number}, {T_Titres{3}, each List.Sum([Quantité Totale en CL]), type nullable number}, {T_Titres{4}, each List.Sum([Quantité Totale en PCE]), type nullable number}, {T_Titres{6}, each Text.Combine([Recettes]," / ")}})
16 oct. 2023 à 00:58
Bonsoir cousinhub29,
Merci pour le fichier c'est exactement ce que je souhaitais faire.
J'ai reussi a avoir le même resultat que vous mais en bricolant un peu.
Car je n'arrive pas à faire le même début que vous c'est à dire obtenir cette première étape
A savoir que j'ai toujours le message me signalant que votre version est plus récente que la mienne.
Merci à vous
trés bonne soirée,
Keshia
16 oct. 2023 à 08:12
Bonjour,
Non, ce message n'est pas bloquant en soi.
J'ai juste oublié de préciser que la cellule K1 est nommée "NomFich".
Peut-être l'origine de l'erreur?
16 oct. 2023 à 23:42
Bonsoir Cousinhub29
J'aurais souhaiter s'il vous plait savoir quel menu vous utilisez pour demarer la premiere requête.
Car j'aimerais vraiment y arriver en faisant exactement comme vous et non en bricolant comme je l'ai fait.
Je débute toujours mes requêtes avec ce menu mais la je suis perdue.
Merci pour votre disponibilité et votre aide
Bonne soirée
Keshia
17 oct. 2023 à 17:37
Bonjour,
Effectivement, le code appliqué n'est pas créé nativement par les diverses manipulations, mais modifié par la suite dans la barre de formules (ou directement dans l'éditeur avancé)
Comme je l'ai précisé supra, l'adresse et le nom du fichier sont calculés par formule dans la cellule L1. (et non plus K1 - version 1)
Et cette cellule L1 est nommée (via ruban "Formules", définir un nom), ou directement dans la case vide au dessus du A
Et ensuite, je modifie à la main dans la requête pour obtenir ce code :
let
Source = Excel.Workbook( File.Contents(Table.FirstValue(Excel.CurrentWorkbook(){[Name="NomFich"]}[Content]))),
FiltrOnglets = Table.SelectRows(Source, each ([Kind] = "Sheet") and ([Item] <> "Recap"))[[Data],[Name]],
Expand = Table.ExpandTableColumn(FiltrOnglets, "Data", {"Column1", "Column4", "Column7", "Column8", "Column9", "Column12"}, {"Column1", "Column4", "Column7", "Column8", "Column9", "Column12"}),
SupprLignes = Table.Skip(Expand,19),
FiltrNull = Table.SelectRows(SupprLignes, each ([Column1] <> null and [Column1] <> "ARTICLES" and [Column1] <> "REF ")),
RenameCol = Table.RenameColumns(FiltrNull, List.Zip({Table.ColumnNames(FiltrNull), List.Distinct(T_Titres)})),
GroupBy = Table.Group(RenameCol, {"code produit", "Dénomination", "Etat du produit"}, {{T_Titres{2}, each List.Sum([Quantité Totale en GRS]), type nullable number}, {T_Titres{3}, each List.Sum([Quantité Totale en CL]), type nullable number}, {T_Titres{4}, each List.Sum([Quantité Totale en PCE]), type nullable number}, {T_Titres{6}, each Text.Combine([Recettes]," / ")}})
in
GroupBy
Notamment la définition de la "Source"
Comme dans ton fichier, on n'utilise pas les Tableaux Structurés, on ne peut pas appeler directement les diverses recettes, on est obligé d'effectuer une requête "externe" (en gros, la requête vient chercher dans ce fichier par connexion externe, d'où l'obligation d'enregistrer le fichier afin de prendre en compte les modifications et/ou ajouts dans la requête
Bon courage
19 oct. 2023 à 10:30
Bonjour Cousinhub29,
Merci infiniment pour les explications. Je n'ai jamais proceder ainsi.
je vais essayer tranquillement ce week-end et je vous ferai un retour.
Tres bonne journée à vous
Keshia
25 oct. 2023 à 10:02
Bonjour Cousinhub29
Merci pour votre aide j'ai enfin reussi a faire comme dans votre exemple.
Tres bonne journée à vous
Keshia
15 oct. 2023 à 13:00
Bonjour Cousinhub29,
Merci beaucoup pour la solution que vous m'avez proposer cela fonctionne c'est parfait.
Comme je n'ai pas reussi à faire la premiere étape de la requête c'est à dire a obtenir tous mes onglets sur une seule et même requête
Donc j'ai exporter tous mes onglets en connexion puis j'ai ajouter chaque requête l'une à la suite et aprés j'ai pu suivre vos étapes jusqu'a la fin.
J'aurais encore une question s'il vous plait sur le fichier j'ai oublier de recupérer le nom de la recette en colonne c je souhaiterais afficher le nom de la recette en face de chaque ingredients.
Mais quand je recupere cette nouvelle colonne je suis embetée par les prix dont je n'ai pas besoin.
https://www.cjoint.com/c/MJpk66xYRdG
Merci pour votre aide.
Tres bon dimanche
Keshia