Power Query regrouper des données de plusieurs onglets
Résolukeshia21 Messages postés 194 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais s'il vous plait de l'aide pour regrouper et additionner certaines données de plusieurs onglets sur un seul tableau.
Avec power query car je ne maitrise pas du tout le VBA.
Merci d'avance pour vos suggestions.
https://www.cjoint.com/c/MJnpF2tvn8I
Tres bon week-end à vous
Keshia
- Power Query regrouper des données de plusieurs onglets
- Fuite données maif - Guide
- Power iso 32 bit - Télécharger - Gravure
- Power query download - Télécharger - Tableur
- Power amc - Télécharger - Édition & Programmation
- Trier des données excel - Guide
4 réponses
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
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
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]," / ")}})
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
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?
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
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
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