PowerQuery : rechercher/remplacer plusieurs fois sur une même ligne de code

Bonjour à tous,

Il me semble que j'ai déjà vu passer sur le forum le fait de rechercher/remplacer dans une même colonne plusieurs données à la fois.

    #"Valeur remplacée1" = Table.ReplaceValue(#"Valeur remplacée","014. Attténuations de produits","014. Atténuations de produits",Replacer.ReplaceText,{"CHAPITRE"}),

    #"Valeur remplacée2" = Table.ReplaceValue(#"Valeur remplacée1","040. Opérations d’ordre de transfert entre section","040. Opérations d'ordre de transfert entre section",Replacer.ReplaceText,{"CHAPITRE"}),

    #"Valeur remplacée3" = Table.ReplaceValue(#"Valeur remplacée2","040. Opérations d'ordre de transfert entre sections","040. Opérations d'ordre de transfert entre section",Replacer.ReplaceText,{"CHAPITRE"}),

    #"Valeur remplacée4" = Table.ReplaceValue(#"Valeur remplacée3","042. Opérations d’ordre de transfert entre sections","042. Opérations d'ordre de transfert entre sections",Replacer.ReplaceText,{"CHAPITRE"}),

Etc .....

Le but serait d'avoir qu'une seule étape.

Certaines étapes ont l'option "totalité du contenu de la cellule".

Est-ce possible ?

Merci d'avance

Bonjour à tous !

C'est, je pense, du domaine du possible....

Un classeur représentatif ?

Bonsoir JFL,

Voici un petit exemple

Merci

Bonjour à tous !

Une proposition :

Note : Pourquoi ne pas opter pour une table de correspondance ? Chargée dans Power Query, elle éviterait, via une jointure adéquate, de devoir changer le code à chaque fois.

Bonjour JFL,

Merci,

J'avoue que l'idée d'une table de correspondance est parfaite, je n'y avais pas pensé d'emblée. Je vais donc adopter celle-ci !

Bonjour à tous de nouveau !

Avec la méthode Table de correspondance, on peut condenser la requête en évitant l'étape "Expand" :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Fusion = Table.NestedJoin(Source, {"CHAPITRE"}, t_CorrespCompte, {"Ancien"}, "t_CorrespCompte", JoinKind.LeftOuter),
    ValRempl = Table.ReplaceValue(Fusion,
                each [CHAPITRE],
                each if [t_CorrespCompte][Nouveau]{0}<>null then [t_CorrespCompte][Nouveau]{0} else [CHAPITRE],
                Replacer.ReplaceText,{"CHAPITRE"}),
    ColSupp = Table.RemoveColumns(ValRempl,{"t_CorrespCompte"})
in
    ColSupp

Dans ce cas,

[t_CorrespCompte] => correspond à la table

[Nouveau] => correspond à la colonne

{0} => ??? Je pensais que cela correspondait au numéro de ligne ?

Bonjour à tous de nouveau !

Votre vision syntaxique est correcte..... Par contre vous vous méprenez sur la table.

Certes, dans la requête initiale, le nom est identique mais la table jointe n'est pas celle chargée dans Power Query, puisque la jointure produit ses effets.

Pour en convaincre, cliquer sur la table jointe dans l'étape "Fusion".

Au surplus, et pour que vous puissiez mieux vous y retrouver, j'ai revisité la requête en y mentionnant des noms différents.

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Fusion = Table.NestedJoin(Source, {"CHAPITRE"}, t_CorrespCompte, {"Ancien"}, "t_C", JoinKind.LeftOuter),
    ValRempl = Table.ReplaceValue(Fusion,
                each [CHAPITRE],
                each if [t_C][Nouveau]{0}<>null then [t_C][Nouveau]{0} else [CHAPITRE],
                Replacer.ReplaceText,{"CHAPITRE"}),
    ColSupp = Table.RemoveColumns(ValRempl,{"t_C"})
in
    ColSupp

RE,

Merci pour ces précisions. La nouvelle colonne chargée lors de la fusion prend effectivement le nom "par défaut" de la table d'origine. Que l'on peut renommer comme bon nous semble... Comme dans l'exemple fourni

Parfait, parfait

Bonsoir à tous de nouveau !

La nouvelle colonne chargée lors de la fusion prend effectivement le nom "par défaut" de la table d'origine. Que l'on peut renommer comme bon nous semble...

Absolument !

Je vous remercie de ce retour.

Rechercher des sujets similaires à "powerquery rechercher remplacer fois meme ligne code"