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 - 13 oct. 2023 à 17:37
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

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

A voir également:

4 réponses

cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024 344
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


1
keshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 3
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

0
cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024 344
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


1
cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024 344
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]," / ")}})
1
keshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 3 > cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024
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

0
cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024 344
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?


1
keshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 3
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

0
cousinhub29 Messages postés 959 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 19 novembre 2024 344
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

1
keshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 3
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

0
keshia21 Messages postés 166 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 8 septembre 2024 3
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

0