Power Query - Embranchement conditionnel entre plusieurs étapes

Bonjour à tous,

Est-il possible d'effectuer des embranchements conditionnels entre plusieurs étapes d'une requête Power Query ?

Par exemple, dans l'exemple ci-après, je souhaiterai effectuer plusieurs étapes uniquement si l'étape #"Lignes filtrées" n'est pas vide. Le seul moyen que j'ai trouvé est de reporter une valeur ("table_vide" ou "table_non_vide") d'étape en étape :

let

Source = Excel.CurrentWorkbook(){[Name="code_art"]}[Content],
modif_type = Table.TransformColumnTypes(Source,{{"Code article", type text}}),
#"Lignes groupées" = Table.Group(modif_type, {"Code article"}, {{"Nombre", each Table.RowCount(_), Int64.Type}}),
#"Lignes filtrées" = Table.SelectRows(#"Lignes groupées", each [Nombre] > 1),

var_table_vide = if Table.IsEmpty(#"Lignes filtrées") then "table_vide" else "table_non_vide",
#"index_par regroup_regroup" = if var_table_vide = "table_non_vide" then Table.Group(#"Lignes filtrées", {"Code article"}, {{"temp_cpte_code_art", each _, type table [Code article=nullable text]}}) else "table_vide",
ajt_col_index = if #"index_par regroup_regroup" <> "table_vide" then Table.AddColumn(#"index_par regroup_regroup", "cpte_code_art", each Table.AddIndexColumn([temp_cpte_code_art], "cpte_cpte_art", 1, 1)) else "table_vide",

...

Est-ce qu'il existe un moyen d'exécuter plusieurs étapes en fonction d'une condition ?

D'avance merci de votre précieuse aide et toute bonne journée

Fabrice

Bonsoir à tous !

A lire le code, j'ai le sentiment d'une confusion langage M et VBA....

Le plus simple serait de mettre à notre disposition un classeur représentatif et anonymisé, avec les éléments de votre tableau code_art et le résultat attendu de la requête.

bonjour JFL,

Je vous remercie de votre réponse. Voici un fichier avec un petit exemple. En résumé, si la feuille Liste d'article ne contient aucun doublon, alors ajouter une colonne avec la valeur 1, sinon créer un index par doublons (car ils peuvent être plus de 2). Pour des raisons de performance (il y a plus de 80'000 lignes), j'essaie d'éviter les étapes de regroupement s'il n 'y a pas de doublons (car il s'agit d'un cas relativement rare, mais possible).

Merci pour votre aide et pour votre temps

Cordialement

Fabrice

Bonsoir winzek,

Attendons la réponse de JFL mais de ce que j'ai compris j'agirais de la manière suivante :

let
    Source = Excel.CurrentWorkbook(){[Name="liste_articles"]}[Content],
    #"Lignes groupées" = Table.Group(Source, {"Code article"}, {{"Nombre", each Table.AddIndexColumn(_,"Idx",1)}}),
    #"Nombre développé" = Table.ExpandTableColumn(#"Lignes groupées", "Nombre", {"Idx"}, {"Nombre.Idx"})
in
    #"Nombre développé"

Bonsoir à tous de nouveau !

Ma perception des choses est totalement identique à celle proposée par JB_

Bonjour à tous,

Veuillez excuser ma réponse tardive et un grand merci à JFL et JB_ pour leur aide. Ca fonctionne très bien ça m'a permis de corriger cette partie de ma requête encore merci. J'ai d'autres parties de code (étapes de requêtes) que j'aimerais exécuter non en fonction d'une condition. Je me permets de revenir à ma question initiale : est-il possible d'effectuer des embranchements conditionnels entre plusieurs étapes d'une requête Power Query ?

Par exemple, si un paramètre du classeur Excel est vrai alors on exécute une partie de la requête, sinon on exécute d'autres étapes de la même requête ?

Encore merci de partage vos connaissances et une toute bonne journée

Fabrice

Bonjour à tous

Une solution :

  • nommer la dernière étape commune, Etat0 par exemple
  • enchaîner les étapes du cas A et nommer sa dernière étape Cas A
  • ajouter une étape =Etat0
  • enchaîner les étapes du cas B et nommer sa dernière étape Cas B
  • ajouter l'étape conditionnelle : = if ... then Cas A else Cas B
  • ajouter d'éventuelles étapes communes aux deux cas (suppression de colonnes inutiles par exemple)

Bonjour Chris,

Merci pour cette solution qui fonctionne très bien. Encore un grand merci et belle journée

Fabrice

Rechercher des sujets similaires à "power query embranchement conditionnel entre etapes"