Powr Query: Application d'une condition à plusieurs colonnes

Bonjour à tous je viens vers vous pour savoir si l'un d'entre vous a déjà fait face à cette situation et aurait une solution pour la résoudre:

J'ai une matrice 50*50, la première ligne est composée de chiffres, de même pour la première colonne, mais le reste du tableau est composé de X ou de vide

exemple

A partir de cette matrice je cherche à remplacer tous les X par leur numéro de ligne (par exemple dans la colonne C1 X deviendrait 16), je sais comment le faire avec manuellement à la suite pour chaque colonne en utilisant les colonnes conditionnelles :

exemple1colonne

Mais cette solution est assez insatisfaisante et fastidieuse et je me demandais donc s'il existait des méthodes avec des colonnes personnalisées pour résoudre ce genre de problème en une seule étape.

Je met mon fichier en PJ

Merci à vous, Romain

Bonsoir à tous !

Une proposition ?

Bonjour,

Hello JFL

Une légère variante...

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ModifType = Table.TransformColumnTypes(Source,{"Nom", Int64.Type}),
    Rempl= Table.ReplaceValue(ModifType,null,"@",Replacer.ReplaceValue,List.Difference(Table.ColumnNames(ModifType),{"Nom"})),
    DePivot = Table.UnpivotOtherColumns(Rempl, {"Nom"}, "Attribut", "Valeur"),
    ColSupp = Table.AddColumn(DePivot, "Personnalisé", each if [Valeur] = "@" then "" else [Nom]),
    SupprCol = Table.RemoveColumns(ColSupp,{"Valeur"}),
    PivotCol = Table.Pivot(SupprCol, List.Distinct(SupprCol[Attribut]), "Attribut", "Personnalisé")
in
    PivotCol

Bonne journée

Bonjour à tous

Une légère variante...
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ModifType = Table.TransformColumnTypes(Source,{"Nom", Int64.Type}),
    Rempl= Table.ReplaceValue(ModifType,null,"@",Replacer.ReplaceValue,List.Difference(Table.ColumnNames(ModifType),{"Nom"})),
    DePivot = Table.UnpivotOtherColumns(Rempl, {"Nom"}, "Attribut", "Valeur"),
    ColSupp = Table.AddColumn(DePivot, "Personnalisé", each if [Valeur] = "@" then "" else [Nom]),
    SupprCol = Table.RemoveColumns(ColSupp,{"Valeur"}),
    PivotCol = Table.Pivot(SupprCol, List.Distinct(SupprCol[Attribut]), "Attribut", "Personnalisé")
in
    PivotCol

Je doute que dans le fichier réel les noms soit 1, 2, 3...

Bonjour,

Si effectivement les noms sont différents :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Rempl= Table.ReplaceValue(Source,null,"@",Replacer.ReplaceValue,List.Difference(Table.ColumnNames(Source),{"Nom"})),
    AjoutIndex = Table.AddIndexColumn(Rempl, "Index", 1, 1, Int64.Type),
    DePivot = Table.UnpivotOtherColumns(AjoutIndex, {"Nom", "Index"}, "Attribut", "Valeur"),
    ColSupp = Table.AddColumn(DePivot, "Personnalisé", each if [Valeur] = "@" then "" else [Index]),
    SupprCol = Table.RemoveColumns(ColSupp,{"Valeur"}),
    PivotCol = Table.Pivot(SupprCol, List.Distinct(SupprCol[Attribut]), "Attribut", "Personnalisé"),
    TriIndex = Table.Sort(PivotCol,{{"Index", Order.Ascending}}),
    SupprColIndex = Table.RemoveColumns(TriIndex,{"Index"})
in
    SupprColIndex

Bon dimanche

Merci à Tous !

Super cela fonctionne maintenant,

Encore Merci et bonne continuation cette semaine

Bonjour,

Voici une version plus courte...

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    AjoutIndex = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),
    Rempl= Table.ReplaceValue(AjoutIndex,"X",each _[Index],Replacer.ReplaceValue,List.Difference(Table.ColumnNames(AjoutIndex),{"Nom"})),
    SupprIndex = Table.RemoveColumns(Rempl,{"Index"})
in
    SupprIndex

Bonne journée

Bonjour à tous !

Dans la série "Les plus courtes sont-elles les plus performantes ?" (Bien évidemment je n'évoque que les requêtes.....) :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    ValRempl = let Ln = List.Buffer(Source[Nom]),Lc = List.Skip(Table.ColumnNames(Source),1),
               Vr = Table.ReplaceValue(Source,"X",each List.PositionOf(Ln,[Nom])+1,Replacer.ReplaceValue,Lc)
               in Vr
in
    ValRempl

Merci encore pour vos réponses,

Je vais probablement insérer ces nouvelles versions, elles rendront mon "code" plus simple

Rechercher des sujets similaires à "powr query application condition colonnes"