oguruma
XLDnaute Occasionnel
Bonjour, cela fait un peu suite à ce post : https://excel-downloads.com/threads/excel-powerquery-passage-de-parametres.20076794/ où il est démontré comment passer des paramètres à une requête PowerQuery.
Ce post démontre d'autres manières de récupérer des valeurs d'une feuille de calculs.
Bien que le post mis en lien met en oeuvre l'utilisation d'un tableau structuré (structure très recommandée sous Excel) on peut également passer par des noms de champs ou des plages nommées.
Exemple de valeurs paramètres
Source : nom de champ
PowerQuery attribue par défaut un nom de colonne Column1 au nom de champ Dossier. {0} indice qui correspond à la seule et unique ligne du champ.
A noter que {0} = ligne 1, {0} ligne 2 ==> voir la gestion des listes.
Autre exemple
Source : plage de cellule
On peut aussi en faire une fonction comme celle-ci avec une recherche par mot clef sur la Column1
ou par son index
On peut également simuler une liste qui ressemble de très près à une plage sur une colonne
et enfin une autre manière en passant par tableau structuré transposé en colonne (pratique si peu de paramètres)
Ce tableau
Devient sous PowerQuery
Ce post démontre d'autres manières de récupérer des valeurs d'une feuille de calculs.
Bien que le post mis en lien met en oeuvre l'utilisation d'un tableau structuré (structure très recommandée sous Excel) on peut également passer par des noms de champs ou des plages nommées.
Exemple de valeurs paramètres
Source : nom de champ
PowerQuery attribue par défaut un nom de colonne Column1 au nom de champ Dossier. {0} indice qui correspond à la seule et unique ligne du champ.
A noter que {0} = ligne 1, {0} ligne 2 ==> voir la gestion des listes.
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="Dossier"]}[Content]{0}[Column1]
in
Source
Autre exemple
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="Fichier"]}[Content]{0}[Column1]
in
Source
Source : plage de cellule
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="PARAMETRES"]}[Content]{1}[Column1]
in
Source
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="PARAMETRES"]}[Content]{1}[Column2]
in
Source
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="PARAMETRES"]}[Content]{0}[Column2]
in
Source
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="PARAMETRES"]}[Content]{0}[Column1]
in
Source
On peut aussi en faire une fonction comme celle-ci avec une recherche par mot clef sur la Column1
PowerQuery:
(pParams as text, pName as text) =>
let
Source = Excel.CurrentWorkbook(){[Name=pParams]}[Content],
RowsParams = Table.SelectRows(Source, each ([Column1] = pName)),
value = try RowsParams{0}[Column2] otherwise null
in
value
ou par son index
PowerQuery:
(pParams as text, pIndex as number) =>
let
Source = Excel.CurrentWorkbook(){[Name=pParams]}[Content],
value = try Source{pIndex}[Column2] otherwise null
in
value
On peut également simuler une liste qui ressemble de très près à une plage sur une colonne
PowerQuery:
(pList as text, pElem as number) =>
let
value = try Excel.CurrentWorkbook(){[Name=pList]}[Content]{pElem - 1}[Column1] otherwise null
in
value
PowerQuery:
let
Source = try fnGetElementList("LISTE",1) otherwise null
in
Source
et enfin une autre manière en passant par tableau structuré transposé en colonne (pratique si peu de paramètres)
Ce tableau
Devient sous PowerQuery
PowerQuery:
let
Source = Excel.CurrentWorkbook(){[Name="TbParams"]}[Content],
#"Transposed Table" = Table.Transpose(Source),
#"En-têtes promus" = Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true]),
#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"Param_1", type text}, {"Param_2", type text}, {"Param_3", type text}, {"Param_4", type text}, {"Param_5", type text}})
in
#"Type modifié"
PowerQuery:
let
Source = T_PARAMS[Param_1]{0}
in
Source
Pièces jointes
Dernière édition: