Power Query - fonction personnalisée avec paramètres

Bonjour à tous,

Je commence à utiliser un peu Power Query (mais pourquoi ne l'ai-je pas utilisé plus tôt ?), et j'avoue avoir un peu de mal dès qu'il s'agit de faire quelque chose qui sorte un peu des sentiers battus.

Ici, j'ai des noms, auxquels sont rattachés des paires de valeurs, une normale et une alternative.

image

Ce que je souhaiterais, c'est obtenir un tableau me reprenant une valeur unique pour chaque paire.

À savoir, si une valeur alternative existe, on la récupère.

Sinon, si la valeur normale existe, on la récupère.

Sinon, on récupère le nom.

image

J'arrive bien au résultat souhaité, en utilisant 5 fois l'ajout d'une colonne conditionnelle, mais je pense qu'il doit être possible d'utiliser une fonction personnalisée à laquelle je pourrais passer un tableau de paramètres (J'ai beaucoup plus de colonnes en vérité). Sauf que je m'y perds un peu avec M.

Le tableau de paramètres auquel je pense serait de ce type, même si la deuxième colonne se contente d'ajouter "_ALT" aux valeurs de la première :

image

Si vous pouvez éclairer ma lanterne, je suis preneur !

Merci.

Bonsoir à tous !

Une proposition ?

Bonsoir,

Ma proposition :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    UnPivot = Table.UnpivotOtherColumns(Table.ReplaceValue(Source,null,"",Replacer.ReplaceValue,List.Skip(Table.ColumnNames(Source),1)), {"Nom"}, "Attribut", "Valeur"),
    Ajt = Table.FromColumns(Table.ToColumns(UnPivot) & {List.RemoveFirstN(UnPivot[Valeur]) & {null}},Table.ColumnNames(UnPivot) & {"Alternatif"}),
    Deter = Table.AddColumn(Table.SelectRows(Ajt, each not Text.Contains([Attribut], "_ALT")), "Personnalisé", each if [Alternatif]<>"" then [Alternatif] else if [Valeur]<>"" then [Valeur] else [Nom]),
    Pivot = Table.Pivot(Table.SelectColumns(Deter,{"Nom", "Attribut", "Personnalisé"}), List.Distinct(Deter[Attribut]), "Attribut", "Personnalisé")
in
    Pivot

Bonne soirée

Edit, Grillé, Damned....:)

Bonsoir,

Merci à vous deux pour les propositions, je regarderai plus en détail demain.

Passez une excellente soirée !

Bonsoir,

La syntaxe du langage M me rebute toujours un peu, mais je commence à mieux appréhender le tout.

Concernant mon exemple, j'avais mis des valeurs numériques pour celles dont il ne fallait pas tenir compte, j'aurais dû mettre du texte partout. Ce qui fait que cette ligne ne fonctionne pas sur les valeurs réelles :

= Table.ReplaceValue(Extract,each [Valeur],each if [Valeur]="zzzzzzz" or Value.Is([Valeur], Number.Type) then null else [Valeur],Replacer.ReplaceValue,{"Valeur"})

Du coup, après un tri, les valeurs alternatives étant toutes à la fin du tableau, la solution de cousinhub est fonctionnelle, je dois avouer que j'ai été un peu interloqué par la fonction de suppression de la première ligne, mais j'ai bien saisi le principe.

Pour le renommage des colonnes, qui ne se limite pas à ajouter un "_C", j'ai simplement fusionné avec ma table de correspondance quand les valeurs étaient pivotées, encore un peu de chemin à parcourir avec les fonctions et paramètres...

Le but est surtout de progresser ici, je passe en résolu sur cette seconde solution, mais pouvoir analyser plusieurs méthodes est le plus important.

Encore merci à vous deux, sans doute à très vite !

Bonsoir à tous !

Je vous remercie de ce retour.

Et.... bonne progression..

Rechercher des sujets similaires à "power query fonction personnalisee parametres"