IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Pierre Fauconnier

Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2)

Noter ce billet
par , 22/12/2020 à 08h05 (3016 Affichages)
Salut.

Dans un récent billet, j'ai illustré la possibilité de récupérer la valeur d'une cellule nommée.
Dans le premier billet relatif aux fonctions personnalisées, nous avons vu comment créer une fonction personnalisée.

Dans ce deuxième billet consacré aux fonctions personnalisées dans Power Query, nous allons voir comment récupérer un paramètre issu d'un tableau de paramètres créé en Excel.

Plage nommée

On peut bien sûr récupérer un paramètre stocké dans une plage nommée, comme je l'explique dans ce billet. On imagine alors de pouvoir passer le nom de la plage en paramètre et récupérer la valeur de n'importe quelle plage nommée par ce biais.

Pour rappel, on récupère la valeur d'une plage nommée mono-cellule avec ce code: = Excel.CurrentWorkbook(){[Name="NomCelluleNommée"]}[Content]{0}[Column1] où NomCelluleNommée doit être remplacé par le nom de la plage nommée en Excel.

Pour reprendre l'exemple du chemin d'accès aux données saisi dans la cellule nommée Chemin, on pourrait créer une fonction qui permettra de déterminer la cellule nommée dont on veut récupérer la valeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
let
    Source = (Name as text) as any =>
    Excel.CurrentWorkbook(){[Name=Name]}[Content]{0}[Column1]
in
    Source
Nom : 2020-12-21_134202.png
Affichages : 1176
Taille : 5,1 Ko

Nom : 2020-12-21_134218.png
Affichages : 1167
Taille : 1,9 Ko

La même fonction permet donc de récupérer la valeur de la première cellule (coin supérieur gauche) de n'importe quelle plage nommée du classeur. Si je crée une plage nommée Année pour pouvoir filtrer des données sur une année précise, il suffira de passer le nom de cette plage en paramètre:

Nom : 2020-12-21_134648.png
Affichages : 1177
Taille : 1,6 Ko


Utilisation d'un tableau structuré dans la fonction personnalisée Power Query

Même si on peut trouver cela intéressant, ce n'est possible que si l'on a peu de paramètres, car il faut créer autant de cellules nommées que l'on a de paramètres à gérer. Les tableaux structurés permettant l'ajout de données qui seront reprises dans la requête Power Query, il semblera vite plus intéressant de créer le tableau des paramètres et d'utiliser une fonction qui ne récupère plus une plage nommée, mais une valeur du tableau structuré en fonction du nom de cette valeur. On disposera donc d'un tableau structuré de deux colonnes, permettant de "jouer" avec des paires Clé/Valeur.

Nom : 2020-12-21_162752.png
Affichages : 1147
Taille : 5,6 Ko

Avec un filtre, il est alors possible de récupérer rapidement un paramètre avec le code suivant:

Code PowerQuery : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
let
    Source = Excel.CurrentWorkbook(){[Name="t_Paramètres"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Nom", type text}, {"Valeur", type any}}),
    #"Lignes filtrées" = Table.SelectRows(#"Type modifié", each ([Nom] = "Chemin"))
in
    #"Lignes filtrées"

Nom : 2020-12-21_162952.png
Affichages : 1134
Taille : 6,8 Ko


La fonction recevra donc la clé en argument et filtrera sur cette clé, par un simple remplacement de "Chemin" par le nom du paramètre et le code ci-dessus doit être modifié pour transformer la requête Power Query en fonction paramétrée. En synthétisant un peu le code, on arrive à la fonction GetParameter suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
let
    Source = (Name as text) as any =>
    Table.SelectRows(Excel.CurrentWorkbook(){[Name="t_Paramètres"]}[Content], each [Nom] = Name){0}[Valeur]
in
    Source
L'ajout de paires clé/valeur dans le tableau des paramètres permet à Power Query d'exploiter ces nouveaux paramètres:

Nom : 2020-12-21_164148.png
Affichages : 1125
Taille : 3,2 Ko

Nom : 2020-12-21_164215.png
Affichages : 1119
Taille : 1,5 Ko

Nom : 2020-12-21_164232.png
Affichages : 1102
Taille : 1,7 Ko


Voici un deuxième exemple d'utilisation d'une fonction paramétrée, à garder sous le coude puisque l'on peut imaginer que beaucoup de nos solutions Power Query devront utiliser les valeurs. Ainsi, si je dois récupérer les valeurs d'une d'un mois précis et d'une année précise sur base du tableau suivant, je peux tout gérer d'Excel grâce au tableau des paramètres.

Avec le tableau Excel suivant, transformé par Power Query avec l'ajout de l'année et du mois, on peut piloter l'extraction depuis Excel, en remplaçant les valeurs du filtre par les valeurs récupérées grâce à la fonction:

Nom : 2020-12-21_165929.png
Affichages : 1152
Taille : 22,7 Ko

Nom : 2020-12-21_170054.png
Affichages : 1183
Taille : 128,1 Ko

La modification des paramètres puis l'actualisation de la requête dans Excel ramène les nouvelles données

Nom : 2020-12-21_170133.png
Affichages : 1166
Taille : 106,5 Ko

Dans le troisième billet, puisque nous venons de voir une requête avec l'année et le mois ajouté et donc parlé de dates, je vous montrerai comment on peut créer une table de dates grâce à une fonction un peu plus élaborée, et nous l'aborderons avec le "créateur de fonction" de Power Query.


Et vous:
allez-vous utiliser les fonctions dans vos solutions Power Query?
Trouvez-vous la création de fonctions simples facile à mettre en place?
Quelle est votre utilisation de Power Query?

Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Viadeo Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Twitter Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Google Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Facebook Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Digg Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Delicious Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog MySpace Envoyer le billet « Power Query: Fonctions personnalisées: Paramétrer Power Query via Excel grâce à une fonction personnalisée (2) » dans le blog Yahoo

Commentaires