Power Query

Transmettre une variable à une requête Power Query

Temps de lecture 3 minutes

Cet article va vous expliquer comment transmettre une variable à une requête Power Query.

Note importante avant de commencer

Le processus décrit ci-dessous s'appuie sur les dernières évolutions apportées à Power Query. Il est nécessaire maintenant de modifier les niveaux de confidentialités

Cette exigence n'était pas nécessaire il y a encore quelques mois. Donc si vous travaillez avec une requête qui a été créée il y a plus d'un an (avant 2020), il y a de fortes chances que vous deviez adapter les niveaux de confidentialités.

Importer un fichier csv

Prenons le cas très simple d'importer un fichier csv dans Excel en utilisant Power Query.

Importer un fichier CSV

Remplacer le nom du fichier par une variable

L'idée ici c'est de rendre dynamique l'écriture pour se connecter au fichier source.

Remplacer le nom du fichier par une variable

De cette façon, nous pouvons remplacer le nom du fichier par une variable pour facilement charger l'un des fichiers présents dans le même répertoire.

Fichiers similaires dans le meme repertoire

Etape 1 : Créer un tableau avec le nom de la variable

Le seul moyen pour Power Query de "lire" le contenu d'une cellule, c'est d'intégrer cette cellule dans un tableau.

Donc nous construisons un tableau avec une seule cellule contenant notre variable. Sans oublier l'entête de la colonne et de donner un nom caractéristique à notre tableau.

Integrer la variable dans un Tableau

Etape 2 : Charger le tableau dans Power Query

Ensuite, il faut charger cette donnée dans Power Query en cliquant simplement sur le menu Données > A partir de Tableau ou d'une Plage

Ouvrir Power Query à partir d'un tableau

Etape 3 : Transformer la requête en valeur

A ce stade, la requête est chargée dans Power Query.

Chargement de la requete avec une seule cellule

Mais pour pouvoir utiliser le contenu de la cellule comme variable, il faut appliquer une transformation

  1. Faîtes un clic-droit dans la cellule
  2. Choisissez l'option Drill-Down. Le terme n'a pas été traduit de l'anglais car "perçage" n'est pas terrible comme dénomination 😉
Option Drill Down pour conserver le resultat de la cellule

Cette action va convertir le contenu de la cellule en valeur. On peut d'ailleurs voir que l'icône dans le volet des requêtes a été transformée. L'icône présente le type de données de la cellule.

Convertion de la cellule en valeur

Dans ce cas de figure, le nom de la variable c'est tblFichier (le nom de la requête) et son contenu c'est la valeur dans la cellule.

Etape 4 : Utiliser la variable dans la source

Maintenant, nous allons remplacer le nom du fichier dans l'étape d'importation en concaténant le chemin et la variable avec le symbole &

La concatenation de la variable et du texte du chemin renvoie une erreur

Le problème c'est qu'après validation, Power Query nous retourne une erreur assez incompréhensible Formula.Firewall : Requête .... 😱😱😱😱😱

Etape 5 : Changer les paramètres de confidentialité.

En fait, pour permettre à Power Query d'interpréter le contenu de la variable, il faut lever les contrôles de confidentialité

  1. Aller sur le menu Fichier
  2. Puis Options et paramètres
  3. Enfin Options de requête
Menu pour changer les options de la requete
  1. Ensuite, il vous faut ouvrir le menu Classeur Actif > Confidentialité
  2. Puis sélectionner l'option Ignorer les niveaux de confidentialité et potentiellement améliorer les performances
Menu Confidentialite Ignorer les niveaux de confidentialite

Maintenant, en rafraîchissant votre requête, la variable est interprétée comme source de vos données 😀👍

Chargement du fichier en utilisant la variable

Si vous voulez en savoir plus sur les raisons d'appliquer des niveaux de confidentialités à vos requêtes, je vous renvoie à cette vidéo d'explications présentée par Chris Webb (Senior Program Manager chez Microsoft).

Etape 6 : Changer le nom du fichier dans la feuille de calcul

Maintenant, il vous suffit de changer le nom du fichier à charger et de rafraîchir la requête (Données > Actualiser)

Changer le nom du fichier a charger dans la cellule

Instantanément, un nouveau fichier est chargé dans votre classeur 😎

Chargement du nouveau fichier apres reactualisation de la requete

Related posts

Créer une table des temps

Frédéric LE GUEN

Valeurs présentes seulement dans une seule colonne

Frédéric LE GUEN

Trouver les doublons

Frédéric LE GUEN

3 commentaires

Patrick ARNAUD 02/04/2021 at 16:37

Bonjour,
moi j'utilise une cellule nommée avec le chemin et nom du fichier que je récupère comme source (ici Fic_Preco) :
Fichier =Excel.CurrentWorkbook(){[Name="Fic_Preco"]}[Content][Column1]{0},
Source = Excel.Workbook(File.Contents(Fichier), null, true),
Excel1 = Source{[Name="Excel"]}[Data],

n'est-ce pas plus simple ?

Répondre
Frédéric LE GUEN 03/04/2021 at 10:56

Oui, c'est une très bonne idée aussi comme cela. Il reste à adapter le code car tel quel, il ne fonctionne pas. Mais l'article illustre surtout le problème lié à la sécurité des données et le moyen de contourner le problème.

Répondre
Etoto 25/03/2021 at 08:47

Merci beaucoup, cela va me faire gagner beaucoup de temps et de place.

Répondre

Laissez un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.