Power Query – Insertion ligne « Vide » dans une table « GroupedBy »

Accueil – Le CFO masqué Forums Power Query Power Query – Insertion ligne « Vide » dans une table « GroupedBy »

Mots-clés : 

  • Ce sujet contient 8 réponses, 2 participants et a été mis à jour pour la dernière fois par Tibee, le il y a 3 années et 1 mois.
9 sujets de 1 à 9 (sur un total de 9)
  • Auteur
    Articles
  • #88258
    Tibee
    Participant

    Bonjour,

    Je suis relativement nouveau dans le monde de power query. Je cherche à modifier une table de données en ajoutant des lignes “vide” dans chacune de mes tables “grouperpar”.

    Mon objectif est de créer des “Entêtes” pour chaque type de profil différents en insérant une ligne “vide” avec la valeur correspondant au profil dans la colonne [Profil].

    Dans un premier temps, ma requête d’insertion d’une ligne vide me renvoi l’erreur suivante dont je n’arrive pas très bien à en déterminer l’origine:

    //Expression.Error : Désolé… Nous n’avons pas pu convertir une valeur de type List en type Number.
    Détails :
    Value=[List]
    Type=[Type] //

    Auriez-vous des suggestions ?

    En vous remerciant,

    Thibaud

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

    Bonjour

    Après votre regroupement par le colonne “Profil”, je vous propose de créer une colonne personnalisée avec une nouvelle table contenant uniquement la valeur de la colonne “Profil” puis d’ajouter cette nouvelle table à la table regroupée précédemment

    Fonction pour la colonne personnalisée : Table.FromList({_[Profil]},null,{“Profil”})
    Pour l’ajout des tables : la fonction Table.Combine ou plus simplement le caractère &

    Code complet
    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Lignes groupées” = Table.Group(Source, {“Profil”}, {{“GroupByProfil”, each _, type table}}),
    Table_profil = Table.AddColumn(#”Lignes groupées”, “Table_Profil”, each Table.FromList({_[Profil]},null,{“Profil”})),
    Ajout_Table = Table.AddColumn(Table_profil, “Ajout”, each [Table_Profil]&[GroupByProfil])
    in
    Ajout_Table

    Il ne reste plus qu’à supprimer les colonnes intermédiaires et à développer la table combinée

    Vous pourriez même le faire directement dans le Table.Group en ajoutant devant le each _ la fonction Table.FromRecords

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],
    #”Lignes groupées” = Table.Group(Source, {“Profil”}, {{“Table Profil”, each Table.FromRecords({[Profil =_[Profil]{0}]})&_, type table }})
    in
    #”Lignes groupées”

    Cordialement

    Stéphane

    #88355
    Tibee
    Participant

    Bonjour,

    Merci Stéphane, le résultat correspond !
    Dans le cas ou je souhaite que la nouvelle table contienne deux colonnes: “Profil” et “Catégorie”, j’ai essayé avec ce code:

    Table_profil = Table.AddColumn(#”Lignes groupées”, “Table_Profil”,
    each Table.FromList({_[Profil],Catégorie= “ST”},
    Record.FieldValues,{“Profil”,”Catégorie”})),

    Cependant les valeurs du tableau sont en “Error”.
    Est-ce la bonne méthode ?

    Bien cordialement
    Thibaud

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

    Bonjour
    Le plus simple pour ajouter une table avec un champ “Profil” égal au profil en cours et un champ “Catégorie” égal à “ST” est un Table.FromRecords

    Table_profil = Table.AddColumn(#”Lignes groupées”, “Table_Profil”,
    each Table.FromRecords({[Profil=_[Profil],Catégorie=”ST”]}))

    Stéphane

    #88525
    Tibee
    Participant

    Bonjour Stéphane,

    Merci,
    J’ai essayé de rajouter la valeur _[Type Liste] dans Table.FromRecords sans succès, j’ai une erreur dans ma colonne “Type Liste”.

    Table_profil = Table.AddColumn(#”Lignes groupées”, “Table_Profil”,
    each Table.FromRecords({[Profil=_[Profil],#”Type Liste”=_[Type Liste],Catégorie= “ST”]})),

    Avez-vous une suggestion?
    Thibaud

    #88528
    Stéphane Lorin
    Participant

    Bonjour

    Je viens de tester votre code Table.FromRecords({[Profil=_[Profil],#”Type Liste”=_[Type Liste],Catégorie= “ST”]}) sur votre fichier du 15 mars sans problème.
    Le champ [Type Liste] prends bien la valeur “Liste A”.

    Ajoutez une pièce jointe au besoin.

    Cordialement
    Stéphane

    #88530
    Tibee
    Participant

    Ci-joint le fichier.
    J’ai cette erreur:
    Expression.Error : Désolé… Nous n’avons pas trouvé le champ « Type Liste » de l’enregistrement.
    Détails :
    Profil=TUBE-219.1*3.2
    GroupByProfil=[Table]

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

    C’est qu’il faut aussi faire le regroupement par “Type Liste” en plus du champ “Profil”

    let
    Source = Excel.CurrentWorkbook(){[Name=”Tableau1″]}[Content],

    #”Type modifié” = Table.TransformColumnTypes(Source,{{“Repère”, Int64.Type}, {“Type Liste”, type text}, {“Ref Affaire”, type text}, {“Catégorie”, type text}, {“Column5”, type any}, {“Profil”, type text}, {“Qté”, Int64.Type}, {“Qualité”, type text}, {“Long. (mm)”, Int64.Type}, {“Surface (m²)”, type number}, {“Poids (kg)”, type number}, {“Pds Tot (kg)”, type number}, {“Désignation”, type text}}),

    #”Lignes groupées” = Table.Group(#”Type modifié”, {“Profil”, “Type Liste”}, {{“GroupByProfil”, each _, type table [Repère=nullable number, Type Liste=nullable text, Ref Affaire=nullable text, Catégorie=nullable text, Column5=text, Profil=nullable text, Qté=nullable number, Qualité=nullable text, #”Long. (mm)”=nullable number, #”Surface (m²)”=nullable number, #”Poids (kg)”=nullable number, #”Pds Tot (kg)”=nullable number, Désignation=nullable text]}}),
    Table_profil = Table.AddColumn(#”Lignes groupées”, “Table_Profil”,
    each Table.FromRecords({[Profil=_[Profil],#”Type Liste”=_[Type Liste],Catégorie= “ST”]})),

    Ajout_Table = Table.AddColumn(Table_profil, “Ajout”, each [Table_Profil]&[GroupByProfil]),
    #”Colonnes supprimées” = Table.RemoveColumns(Ajout_Table,{“Profil”, “GroupByProfil”, “Table_Profil”, “Type Liste”}),
    #”Ajout développé” = Table.ExpandTableColumn(#”Colonnes supprimées”, “Ajout”, {“Profil”, “Repère”, “Type Liste”, “Ref Affaire”, “Catégorie”, “Column5”, “Qté”, “Qualité”, “Long. (mm)”, “Surface (m²)”, “Poids (kg)”, “Pds Tot (kg)”, “Désignation”}, {“Profil.1”, “Repère”, “Type Liste”, “Ref Affaire”, “Catégorie”, “Column5”, “Qté”, “Qualité”, “Long. (mm)”, “Surface (m²)”, “Poids (kg)”, “Pds Tot (kg)”, “Désignation”})
    in
    #”Ajout développé”

    Stéphane

    #88700
    Tibee
    Participant

    Effectivement,
    C’est compris. Merci pour vos réponses.

    Thibaud

9 sujets de 1 à 9 (sur un total de 9)
  • Vous devez être connecté pour répondre à ce sujet.