Remplacer colonnes null / d'1 critère de la 1ère colonne power query

Bonjour,

Je souhaiterais obtenir le mot "DEBUT" dans chaque colonne "null" si dans la 1ère colonne contient ou commence par "Article" avec power query

Est-ce possible de le faire car je ne trouve pas merci d'avance

En PJ le fichier

15test.xlsx (13.49 Ko)

Bonjour à tous !

Une proposition ?

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    Traitt = Table.FromRecords(Table.AddColumn(Source, "Traitt", each let 
                n= List.Skip(Record.FieldNames(_)),
                v= List.Transform(n, each "DEBUT")
                in  if Text.StartsWith([BASE TEST],"Article") then _ & Record.FromList(v,n) else _)[Traitt])
in
    Traitt

Bonjour JFL,

Merci cela fonctionne parfaitement c'est good parfait

Une question est il possible de la faire pour toutes les colonnes sauf le montant HT

Il faut j'essaie de comprendre c'est difficile mais cela fonctionne du tonerre

merci encore à toi

Cordialmeent,

Bonjour à tous de nouveau !

Une question est il possible de la faire pour toutes les colonnes sauf le montant HT

Aucun champ "montant HT" dans le jeu d'essai.....

Bonjour JFL,

Merci cela fonctionne bien on peux déplacer ta formule

"n= List.Skip(Record.FieldNames(_)),
v= List.Transform(n, each "DEBUT")"
Je ne comprend pas cela pourrais tu expliquer en simplifiant pour que je comprenne un peu.

Ce que je comprend c'est 2 listes une que tu liste et une que tu transforme

Merci encore à toi

Bonjour à tous de nouveau !

L'idée générale est de créer un record constitué des champs à modifier.

  1. Liste, de manière dynamique, les champs à retraiter ===> List.Skip(Record.FieldNames(_))
  2. Création d'une liste dynamique contenant "DEBUT" ===> List.Transform(n, each "DEBUT")
  3. Mise en place d'un test ( if Text.StartsWith([BASE TEST],"Article")) pour cerner les lignes à modifier. Si oui, on crée un record qui va venir modifier le record existant ===> _ & Record.FromList(v,n)

Bonjour à tous,

Une autre méthode (quasi 100% ruban), plus accessible pour les débutants, où les étapes de transformation sont détaillées pas à pas. (Cette méthode n'est pas dynamique si les noms de colonnes changent )

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau2"]}[Content],
    Cond = Table.AddColumn(Source, "Personnalisé", each if Text.Contains([BASE TEST], "Article") then "OK" else null),
    Idx = Table.AddIndexColumn(Cond, "Index", 1, 1, Int64.Type),
    Filtre = Table.SelectRows(Idx, each ([Personnalisé] = "OK")),
    Valremp = Table.ReplaceValue(Filtre,"null","DEBUT",Replacer.ReplaceValue,{"N°", "DATE ", "PERIODE", "CONTRAT"}),
    Combine = Valremp & Idx,
    Tri = Table.Sort(Combine,{{"Index", Order.Ascending}}),
    DoublonSupp = Table.Distinct(Tri, {"Index"}),
    ColSupp = Table.RemoveColumns(DoublonSupp,{"Personnalisé", "Index"})
in
    ColSupp
21test-23.xlsx (23.07 Ko)

Bonjour,

Merci pour les deux solutions et l'explication je comprend un peu mieux même si j'ai encore du chemin 😃

Merci pour tout c'est parfait

Cordialement,

Bonjour à tous de nouveau !

Bien....

Je vous remercie de ce retour.

Rechercher des sujets similaires à "remplacer colonnes null critere 1ere colonne power query"