Modifier la source Power Query en fonction d’une valeur de cellule
Si vous êtes comme moi, vous créez d’abord des solutions Power Query dans un environnement de test; puis, lorsqu’il est prêt, il est relâché dans la nature. Cela signifie que les chemins de tous les fichiers source doivent être mis à jour. Ou peut-être êtes-vous un consultant qui crée des solutions pour les autres; lorsque vous distribuez le classeur à votre client, vous devez leur fournir des instructions compliquées sur la mise à jour des sources de données pour leur environnement. Ne serait-il pas préférable que la source soit liée à une valeur de cellule que nous, ou un client, pourrions facilement mettre à jour? Oui, ça le ferait! Donc, dans cet article, nous allons voir comment faire cela; comment modifier la source Power Query en fonction d’une valeur de cellule.
J’ai déjà écrit sur la modification des sources Power Query (Power Query: modifier l’emplacement des données source). Dans cet article, je montre la méthode manuelle et une méthode utilisant des paramètres. Ce que je vais vous montrer est une méthode encore plus simple.
Je vous recommande de télécharger les fichiers qui prennent en charge cet article, car vous pourrez travailler avec des exemples. C’est la meilleure façon d’apprendre. Vous pourrez voir les solutions en action, et le fichier sera utile pour référence future. Les fichiers de support sont disponibles GRATUITEMENT pour les abonnés à la newsletter.
Le nom de fichier de ce message est 0021 Power Query – Changer la source en fonction de la valeur de la cellule.zip. Le fichier de téléchargement comprend trois fichiers:
- Fichier source – les données chargées dans Power Query
- Fichier de départ pour l’exemple
- Fichier terminé pour l’exemple
Le scénario
Je ne vais pas fournir de détails sur la façon de charger les données source dans Power Query; Je suppose que vous savez déjà comment faire cela.
Si vous utilisez les fichiers d’exemple, les données chargées à partir du fichier source ressemblent à ceci:
La cellule C2 contient le nom du fichier et la cellule C3 contient le chemin du dossier. Ceux-ci ne sont actuellement liés à rien; il ne s’agit actuellement que de texte dans une cellule. Mais à la fin de cet article, ces cellules seront connectées à Power Query.
Ce sont des emplacements de fichiers sur mon PC, donc cela ne fonctionnera pas pour vous. Remplacez le nom de fichier et le chemin du dossier par l’emplacement de votre fichier source.
REMARQUE: une erreur courante consiste à oublier la barre oblique inverse à la fin du chemin du dossier.
Créer des plages nommées
Maintenant, créez deux plages nommées:
Sélectionnez la cellule C2 (le nom du fichier) et créez un plage nommée appelée FileName. Pour ce faire, tapez le nom de la plage nommée dans la zone de nom et appuyez sur Entrée.
Ensuite, nous répétons l’étape ci-dessus pour le chemin du fichier. Sélectionnez la cellule C3 (le chemin du fichier) et créez un plage nommée appelée FilePath.
Nous allons combiner ces deux plages nommées dans le code M. de Power Query. Alors, assurez-vous qu’ils forment un chemin de fichier valide.
Utiliser la plage nommée dans le code M
Il ne nous reste plus qu’à utiliser les plages nommées dans notre requête.
Ouvrez le volet Requêtes et connexions en cliquant sur Données -> Requêtes et connexions.
Double-cliquez sur le nom de la requête pour ouvrir l’éditeur de requête.
]
Dans l’éditeur Power Query, cliquez sur Affichage -> Éditeur avancé.
Référence des plages nommées en code M
Nous ajouterons de nouvelles étapes directement après l’instruction let.
FilePath = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1], FileName = Excel.CurrentWorkbook(){[Name="FileName"]}[Content]{0}[Column1],
Ces lignes de code M sont en fait les mêmes, mais une pour le chemin du fichier et une pour le nom du fichier. La ventilation du code pour la première ligne est la suivante:
- FilePath = : Le nom de l’étape dans Power Query
- Excel.CurrentWorkbook () : Fonction Power Query qui utilise les données du classeur actuel
- {[Name=”FilePath”]} : Le nom de la plage nommée
- [Content]{0}[Column1] : Utilise la première ligne et la première colonne de la table de la plage nommée
N’OUBLIEZ PAS: assurez-vous que chaque ligne de code dans l’éditeur avancé est terminée par une virgule.
Dans cet exemple, nous avons deux plages nommées, mais nous pouvons en créer autant que nécessaire.
Utiliser des plages nommées comme source
Enfin, nous devons insérer les étapes FilePath et FileName dans l’étape Source.
Remplacez ceci:
Source = Excel.Workbook(File.Contents("C:UsersmarksOneDriveDocumentsSourceFile.xlsx"), null, true),
avec ça:
Source = Excel.Workbook(File.Contents(FilePath & FileName), null, true),
Cliquez sur Terminé pour fermer l’éditeur de requête. ensuite Fermer et charger les données de nouveau dans Excel.
En supposant que nous ayons tout fait correctement, les données de la requête sont désormais liées aux cellules. Nous pouvons changer les valeurs dans les cellules C2 et C3, puis cliquer sur Actualiser et Ta-dah! Les données seront actualisées dans le nouveau fichier source. Nous avons réussi à modifier la source Power Query en fonction d’une valeur de cellule.
Rendre le chemin du fichier dynamique (pas pour OneDrive)
Si les fichiers source sont contenus dans le même dossier que le classeur contenant la requête, il est possible d’utiliser un chemin de fichier dynamique. Essayez d’entrer ce qui suit dans la cellule C3.
=LEFT(CELL("filename",$A$1),FIND("[",CELL("filename",$A$1),1)-1)
La formule sera automatiquement mise à jour pour afficher le chemin de fichier correct.
Remarques:
- Le classeur contenant la requête doit être enregistré
- Les classeurs enregistrés sur OneDrive afficheront l’URL https, plutôt que le chemin du fichier local, ce qui rend cette méthode difficile à utiliser sans développement supplémentaire
Conclusion
Voilà, nous avons appris à modifier la source Power Query en fonction d’une valeur de cellule. Il suffit de quelques plages nommées et de quelques lignes courtes de code M.
Désormais, n’importe quel utilisateur peut facilement modifier la cellule pour rediriger la requête vers l’emplacement des données source correct. Ils n’ont même pas besoin d’ouvrir Power Query ou de comprendre comment cela fonctionne.
N’oubliez pas:
Si vous avez trouvé cet article utile ou si vous avez une meilleure approche, veuillez laisser un commentaire ci-dessous.
Avez-vous besoin d’aide pour l’adapter à vos besoins?
Je suppose que les exemples de cet article ne correspondaient pas exactement à votre situation. Nous utilisons tous Excel différemment, il est donc impossible d’écrire un article qui répondra aux besoins de chacun. En prenant le temps de comprendre les techniques et principes de cet article (et ailleurs sur ce site) vous devriez pouvoir l’adapter à vos besoins.
N’y allez pas encore, il y a beaucoup plus à apprendre sur comment-supprimer. Consultez les derniers articles: