[Power Query] Transformer colonne + pivot

Bonjour à tous,

Jeu de données avec exemple de résultat attendu en PJ

1ère partie: transformation de colonne

Je souhaiterai modifier ma colonne D (il s'agit d'une colonne de désignation de mon article). Mon besoin est de conserver en désignation uniquement ce qui se trouve avant mon code article (les codes articles peuvent être NK, FK, BK ou HK) dans la désignation. Exemple: "ECROUS NK INP" deviendrait "ECROUS".

J'ai une colonne C (colonne Code) qui peut être utile ??

2ème partie: pivoter

Une fois cette modification de désignation réalisée, je souhaiterai conserver seulement 1 ligne par Composant (colonne A) et donc afficher les différentes informations propres à chaque colonne qui étaient autrefois sur plusieurs lignes dans une seule et même ligne, dans la colonne correspondante, séparées d'un point virgule.

Lors de ce process, si 2 informations contenus sur 2 lignes différentes sont identiques, serait-il possible de la faire apparaitre qu'une seule fois afin d'éviter les redondances dans mes points virgule ?? (exemple ci-dessous avec "ECROUS") Si oui tant mieux sinon tant pis

Je pense qu'il faudrait utiliser un pivot pour faire ceci, mais je n'ai pas réussi à obtenir le résultat souhaité??

Exemple:

ComposantArticle associéDescriptionCode
AZ3X1ECROUSBK
AZ3X2CHRYSOFK
AZ3X3ECROUSHK

Cela devient:

ComposantArticle associéDescriptionCode
AZ3X1;X2;X3ECROUS;CHRYSOBK;FK;HK

Merci à vous !

Bonjour

Bonjour à tous !

Une autre approche ?

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Type = Table.TransformColumnTypes(Source,{{"Durée", type text}}),
    ValRempl = Table.ReplaceValue(Type,each [Lvl1 Description], each Text.BeforeDelimiter([Lvl1 Description]," "&[Code]),Replacer.ReplaceText,{"Lvl1 Description"}),
    GroupBy = Table.Group(
        ValRempl,
        {"Composant"},
        {
            {"Article associé", each  Text.Combine(List.Distinct([Article associé]),";"), type text},
            {"Code", each Text.Combine(List.Distinct([Code]),";"), type text},
            {"Lvl1 Description", each Text.Combine(List.Distinct([Lvl1 Description]),";"), type text},
            {"Durée", each Text.Combine(List.Distinct([Durée]),";"), type text},
            {"Description", each Text.Combine(List.Distinct([Description]),";"), type text}
        }
        )
in
    GroupBy

Bonjour à tous,

Merci pour ces retours

Une astuce pour effectuer la 1ère partie du problème (transformer ma colonne Lvl1 Description) lorsque ma colonne [Code] ne coïncide pas avec la description?

Il se peut par exemple parfois que le code soit en "NK" mais que la désignation contienne "FK". Je souhaite malgré cette incohérence supprimer ce qu'il y a à partir de "FK" dans ma désignation.

Pour se faire peut-on écrire un algo de type: dès que FK/BK/JK/HK apparait dans [Lvl1 Description] alors ne garder que ce qu'il y a avant ??

Merci!

Bonsoir à tous !

Une proposition à tester ?

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Type = Table.TransformColumnTypes(Source,{{"Durée", type text}}),
    ValRempl = Table.ReplaceValue(
        Type,
        each [Lvl1 Description],
        each Splitter.SplitTextByAnyDelimiter({" NK"," FK"," BK"," JK"," HK"},QuoteStyle.None)([Lvl1 Description]){0},
        Replacer.ReplaceText,
        {"Lvl1 Description"}
        ),
    GroupBy = Table.Group(
        ValRempl,
        {"Composant"},
        {
            {"Article associé", each  Text.Combine(List.Distinct([Article associé]),";"), type text},
            {"Code", each Text.Combine(List.Distinct([Code]),";"), type text},
            {"Lvl1 Description", each Text.Combine(List.Distinct([Lvl1 Description]),";"), type text},
            {"Durée", each Text.Combine(List.Distinct([Durée]),";"), type text},
            {"Description", each Text.Combine(List.Distinct([Description]),";"), type text}
        }
        )
in
    GroupBy
Rechercher des sujets similaires à "power query transformer colonne pivot"