Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

POWERQUERY :: Passage de paramètres & récupération valeurs de cellules

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

oguruma

XLDnaute Impliqué
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.
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:
Bonjour,
Merci pour le post. J'ai voulu tester. Cela fonctionne bien pour obtenir la valeur. Par contre j'obtiens une erreur "Formula.Firewall : Requête « Balance_PQ » (étape « Renommé colonne libellé ») référence d'autres requêtes ou étapes et ne peut donc pas accéder directement à une source de données. Reconstruisez cette combinaison de données", lorsque j'utilise la fonction pour définir un paramètre dans une formule de selection "= Table.SelectRows(Source, each([Année] = fnGetFieldNameValue("Exercice")))". Une solution ?
 
Bonjour,
Et bienvenue sur Xld
A tout hasard, est-ce que PQ est correctement configuré?
Regarde sous ce post
Bonne apm
Merci pour ton retour.
J'ai essayé et mon fichier est bien en .xlsx, sans succés.
J'ai essayé d'utiliser une variable pour la récupération du résultat de l'appel de fonction. Idem.
Par contre l'appel direct de la fonction Excel.CurrentWorkbook(){[Name="Exercice"]}[Content]{0}[Column1] ne génère pas d'erreur.
Je vais rester sur cette option.
 
Re-,
Euh, je ne vois pas le rapport entre ".xlsx" et la configuration de la politique de confidentialité...
Tu as bien ce réglage "Toujours ignorer....", en suivant la méthodologie décrite dans mon lien?
 
Re-,
Euh, je ne vois pas le rapport entre ".xlsx" et la configuration de la politique de confidentialité...
Tu as bien ce réglage "Toujours ignorer....", en suivant la méthodologie décrite dans mon lien?
L'allusion à l'extension est à la fin des échanges sur le post.
Oui, j'ai bien choisi ce réglage.
Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…