Accueil – Le CFO masqué › Forums › Power Query › Promouvoir ligne en en-tête autre que la ligne 1 et +
- Ce sujet contient 5 réponses, 4 participants et a été mis à jour pour la dernière fois par patrice.gandy, le il y a 2 années et 8 mois.
-
AuteurMessages
-
6 mai 2022 à 11 h 17 min #103807patrice.gandyParticipant
Bonjour,
j’ai des exports que je ne peux malheureusement pas modifier.
J’ai plusieurs soucis :
1 – je cherche à promouvoir la ligne 2 d’une base en en tête
2 – je cherche à remplir la cellule à droite de la ligne 2 par la valeur à sa gauche et les fichiers peuvent avoir plus que 5 colonnes et cela peut évoluer dans le temps.Si j’arrive à promouvoir la ligne 2 en en-tête je pense qu’après avoir fait avoir pivoter mon tableau, avec la fonction Table.filldown je devrais pouvoir répondre au point 2 enfin je pense.
La première colonne c’est des semaines
Voici la forme de mon tableau.
Merci d’avance de votre aide
Attachments:
You must be logged in to view attached files.6 mai 2022 à 17 h 02 min #103814ludo.regnierParticipantBonjour
Est-ce que c’est toujours la troisième ligne qui doit être promue comme en-tête ? Est ce que la seconde ligne peut être supprimée ? Si oui pourquoi ne pas supprimer la seconde ligne puis promouvoir la première ligne en en-tête. Il existe des menus qui font cela directement.8 mai 2022 à 18 h 30 min #103824DanielParticipantBonjour Patrice, le Forum,
Je te livre une piste éventuelle qui se rapproche de ce que tu souhaites obtenir.
Je suis parti de la table excel, mais je pense qu’en changeant la source cela devrait fonctionnerlet
Source = Excel.CurrentWorkbook(){[Name=”Campus”]}[Content],
#”Table transposée” = Table.Transpose(Source),
#”En-têtes promus” = Table.PromoteHeaders(#”Table transposée”, [PromoteAllScalars=true]),
#”Rempli vers le bas” = Table.FillDown(#”En-têtes promus”,{“Column1″}),
#”Colonnes renommées” = Table.RenameColumns(#”Rempli vers le bas”,{{“Column1”, “Produit”}, {“Column2”, “Traitement”}}),
#”Supprimer le tableau croisé dynamique des autres colonnes” = Table.UnpivotOtherColumns(#”Colonnes renommées”, {“Produit”, “Traitement”}, “Attribut”, “Valeur”),
#”Colonnes renommées1″ = Table.RenameColumns(#”Supprimer le tableau croisé dynamique des autres colonnes”,{{“Attribut”, “Période”}}),
#”Type modifié2″ = Table.TransformColumnTypes(#”Colonnes renommées1″,{{“Période”, Int64.Type}, {“Valeur”, Int64.Type}})
in
#”Type modifié2″Voici le résultat obtenu (cf pièces jointes)
Espérant que cela t’aidera ç résoudre ton souci
Cordialement
DanielAttachments:
You must be logged in to view attached files.9 mai 2022 à 9 h 04 min #103830Stéphane LorinParticipantBonjour
pour “fusionner” les 2 premières lignes dans une seule , une autre approche consiste à ne transposer, à recopier vers le bas, à combiner les colonnes et à re-transposer que ces 2 premières lignes
puis à combiner avec la table de base (j’ai manuellement indiqué “source” comme 2eme argument de la liste).voici le code
let
Source = Excel.CurrentWorkbook(){[Name=”Campus”]}[Content],
#”Conserver les premières lignes” = Table.FirstN(Source,2),
#”Table transposée” = Table.Transpose(#”Conserver les premières lignes”),
#”Rempli vers le bas” = Table.FillDown(#”Table transposée”,{“Column1″}),
#”Colonnes fusionnées” = Table.CombineColumns(#”Rempli vers le bas”,{“Column1”, “Column2″},Combiner.CombineTextByDelimiter(” “, QuoteStyle.None),”Titre”),
#”Table transposée1″ = Table.Transpose(#”Colonnes fusionnées”),
#”Requête ajoutée” = Table.Combine({#”Table transposée1″, Source}),
#”En-têtes promus” = Table.PromoteHeaders(#”Requête ajoutée”, [PromoteAllScalars=true]),
#”Premières lignes supprimées” = Table.Skip(#”En-têtes promus”,2)
in
#”Premières lignes supprimées”Stéphane
9 mai 2022 à 11 h 33 min #103833DanielParticipantBonjour Patrice, Stéphane,le Forum,
Effectivement, ta réponse répond bien au besoin, exprimé, mais je me pose des questions au sujet d’éventuelles autres analyses qui pourraient survenir.
Exemple : nombre de demandes traitées / nombre de demandes reçues
nombre de demandes reçues pour un type de demande versus le nombre de demandes reçues
Il y a sûrement d’autres exemples possibles, aussi je ne sais pas comment je pourrais répondre à ces questions, alors qu’avoir une colonne contenant (ce que j’ai appelé Produit ou Demandes), devrait permettre d’apporter une réponse aux deux exemples cités.
Pour ma culture personnelle, est-ce possible d’y répondre facilement avec des mesures DAX (que ce soit avec Power BI ou Power Pivot), les deux utilisant le langage DAX. N’étant p)as un spécialiste, je ne dis pas que ma méthode est la meilleure loin de là, on peut certainement faire mieux, mais là je pense que je saurais répondre à mes deux exemples (pas fait de tests, donc à voir)
Stéphane, je me permet de garder ta réponse au cas ou je me retrouverais dans une situation analogue, chaque jour m’éclaire un peu plus sur les différentes possibilités de résoudre un problème.Daniel
9 mai 2022 à 11 h 58 min #103834patrice.gandyParticipantBonjour, je vous remercie de vos recherches et vous livre le résultat.
Source = Excel.Workbook(File.Contents(“\\maif.local\DFSMAIF\DDORS\DPAT\SUPRA\Cercle Sinistres\01_Recurrents\02_Hebdo et Quoti\00_Sources\99_SourcesCompilees\06_CGE\Export_BO_CGE.xlsx”), null, true),
Campus_Sheet = Source{[Item=”Campus”,Kind=”Sheet”]}[Data],
#”Table transposée” = Table.Transpose(Campus_Sheet),
#”Rempli vers le bas” = Table.FillDown(#”Table transposée”,{“Column1″}),
#”En-têtes promus” = Table.PromoteHeaders(#”Rempli vers le bas”, [PromoteAllScalars=true]),
#”Type modifié” = Table.TransformColumnTypes(#”En-têtes promus”,{{“Column1”, type text}, {“Column2”, type text}, {“01”, Int64.Type}, {“02”, Int64.Type}, {“03”, Int64.Type}, {“04”, Int64.Type}, {“05”, Int64.Type}, {“06”, Int64.Type}, {“07”, Int64.Type}, {“08”, Int64.Type}, {“09”, Int64.Type}, {“10”, Int64.Type}, {“11”, Int64.Type}, {“12”, Int64.Type}, {“13”, Int64.Type}, {“14”, Int64.Type}, {“15”, Int64.Type}, {“16”, Int64.Type}, {“17”, Int64.Type}, {“18”, Int64.Type}, {“19”, Int64.Type}, {“52”, Int64.Type}, {“Column23″, type any}}),
#”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié”,{“Column23”}),Comme les colonnes des semaines peuvent évoluer dans le temps, j’ai résolu le soucis en Unpivot uniquement les autres colonnes. Donc dans les fait j’ai sélectionné les colonnes à ne pas “unpivoter” et j’ai donc choisi la fonction UnpivotOtherColumns, cela me permet de ne pas avoir de soucis dans la gestion des semaines ou des mois.
#”Supprimer le tableau croisé dynamique des autres colonnes” = Table.UnpivotOtherColumns(#”Colonnes supprimées”, {“Column1”, “Column2”}, “Attribut”, “Valeur”),
#”Colonne fusionnée insérée” = Table.AddColumn(#”Supprimer le tableau croisé dynamique des autres colonnes”, “Semaine”, each Text.Combine({“S”, [Attribut]}), type text),
#”Colonnes supprimées1″ = Table.RemoveColumns(#”Colonne fusionnée insérée”,{“Attribut”}),
#”Colonnes permutées” = Table.ReorderColumns(#”Colonnes supprimées1″,{“Semaine”, “Column1”, “Column2”, “Valeur”}),
#”Colonnes renommées” = Table.RenameColumns(#”Colonnes permutées”,{{“Column1”, “Entité”}}),Ici en faisant un pivot uniquement sur les deux 2 colonnes souhaitées, je récupère bien en colonne “Traités” et “Reçu” et faisant la somme sur “Valeur”
#”Colonne dynamique” = Table.Pivot(#”Colonnes renommées”, List.Distinct(#”Colonnes renommées”[Column2]), “Column2”, “Valeur”, List.Sum),
#”Personnalisée ajoutée” = Table.AddColumn(#”Colonne dynamique”, “Groupe_Entité”, each “Campus”),
#”Colonnes permutées1″ = Table.ReorderColumns(#”Personnalisée ajoutée”,{“Semaine”, “Groupe_Entité”, “Entité”, “Reçus”, “Traités”})Dans tous les cas merci à vous pour votre aide qui m’a permis de m’orienter dans la bonne direction.
Pour ma part, le sujet est clos.
Attachments:
You must be logged in to view attached files. -
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.