Promouvoir ligne en en-tête autre que la ligne 1 et +

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 1 semaine et 6 jours.
6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #103807
    patrice.gandy
    Participant

    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.
    #103814
    ludo.regnier
    Participant

    Bonjour
    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.

    #103824
    Daniel Blanc
    Participant

    Bonjour 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 fonctionner

    let
    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
    Daniel

    Attachments:
    You must be logged in to view attached files.
    #103830
    Stéphane Lorin
    Participant

    Bonjour
    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

    #103833
    Daniel Blanc
    Participant

    Bonjour 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

    #103834
    patrice.gandy
    Participant

    Bonjour, 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.

    • Cette réponse a été modifiée le il y a 1 semaine et 6 jours par patrice.gandy.
    Attachments:
    You must be logged in to view attached files.
6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.