PowerQuery - Importer des plages nommées depuis un dossier

Bonjour à tous !

Je tente actuellement d'améliorer un fichier pro dans lequel j'avais pu créer un macro en VBA qui me permettait de récupérer des données d'autres classeurs en fonction du nom de leur plages. Il fonctionne bien mais n'est pas aussi dynamique et modelable qu'une requête PowerQuery.

Un membre du forum m'avait même proposé de l'aide avec cette requête (il se reconnaitra surement) mais mes fichiers étaient trop confidentiels pour les publier. J'ai donc recréé des fichiers "exemples" moins aboutis que ceux que j'utilise mais l'idée reste la même.

Voilà ma problématique :

J'ai un dossier contenant des fichiers .xlsx (tous similaires) dont certaines cellules sont nommées (nomClient, mailClient...).
J'aimerai pouvoir récupérer toutes ces données sous forme d'un tableau avec une ligne par client et autant de colonnes que de plages nommées différentes (chaque plage ne comportant qu'une seule cellule et donc une seule donnée).

Sur un autre projet j'avais réussi à importer une plage nommée comportant un tableau structuré et je m'étais servi du nom du fichier (repris dans la 1ère colonne) pour créer mon "index" avec les numéros client. Je ne sais pas si ici la démarche est similaire car après plusieurs essais, je ne parviens pas à obtenir une base complète. Le fait de pivoter ou dépivoter n'aide pas non plus...

Si quelqu'un a quelque chose à me proposer, je lui en serais reconnaissant.

Bien cordialement

8idee-resultat.xlsx (14.29 Ko)

P.S : mes fichiers "test" en PJ évidemment (sur l'un d'eux, j'ai volontairement laissé une plage sans données pour simuler une erreur et voir le comportement de PQuery)

61234567a.xlsx (8.64 Ko)
41234567b.xlsx (8.60 Ko)
51234567c.xlsx (8.62 Ko)
41234567d.xlsx (8.61 Ko)

Bonjour à tous,

Une proposition via..... Power Query :

Bonjour JFL !

Que dire à part que ça semble répondre parfaitement à ma demande.

Est-ce que tu pourrais m'en dire plus sur la manière dont tu as pu obtenir ce résultat ? Je suis allé dans l'éditeur de PQuery pour décortiquer tes étapes appliquées (et changé la source au départ pour reprendre mes fichiers) mais les 2 dernières étapes sont en erreur car il ne trouve pas le lecteur cible (USB). Je ne vois rien après l'étape ou tu n'as laissé qu'une seule colonne "Transformer le fichier".

J'imagine que c'est l'ajout de cette colonne à l'étape 3 qui te permet de récupérer les données mais je n'ai aucune idée de comment reproduire ça ^^

Bref, si tu pouvais m'éclairer rapidement sur le sujet, ça m'aiderait beaucoup !

Encore merci pour ton aide en tout cas.

Cordialement.

Bonjour à tous,

Est-ce que tu pourrais m'en dire plus sur la manière dont tu as pu obtenir ce résultat ? Je suis allé dans l'éditeur de PQuery pour décortiquer tes étapes appliquées (et changé la source au départ pour reprendre mes fichiers) mais les 2 dernières étapes sont en erreur car il ne trouve pas le lecteur cible (USB). Je ne vois rien après l'étape ou tu n'as laissé qu'une seule colonne "Transformer le fichier".

Il ne trouve pas votre lecteur ?
Etrange.... Pour votre information je stocke vos fichiers sur un disque dur.....externe. Et je ne rencontre aucune difficulté.

"Transformer le fichier à partir de....."
J'ai laissé cette partie à des fins explicatives. On pourrait utilement la remplacer par une simple fonction.
Ces instructions sont utilisées par Power Query pour modéliser le traitement à opérer sur chaque fichier.

La requête principale est celle nommée "Ropperlimp"

Elle va lire le répertoire passé en paramètre, intégrer les différents fichiers et appliquer, via la fonction personnalisée "Transformer le fichier", le traitement de base.
Il ne reste plus qu'à finaliser : supprimer certaines colonnes, renommer, typer, etc....

Merci JFL pour ta réponse !

J'ai compris d'où venait l'erreur de dossier source. Il fallait également que je corrige la source dans la fonction personnalisée et dans l'exemple de fichier pour que la requête principale me laisse voir toutes les étapes ^^. Je débute sur Power Query et même encore après de nombreuses heures de vidéos de formation, je constate avoir encore beaucoup à apprendre sur cet outil si puissant !

Ce que je ne pige pas en reprenant les étapes du coup c'est la fonction en elle-même. Est-ce une fonction écrite en dur avec du code ou cela peut-il être réalisé avec l'assistant ? Dans la fonction, je peux lire que les entêtes sont promues mais à aucun moment, je ne lis quelque chose concernant les plages nommées. Comment fais-tu pour les "dépivoter" en colonnes ?

Je vois également un exemple de fichier en binaire, un paramètre qui reprend cet exemple de fichier... Et cela reste confus pour moi. J'ai du mal à faire le lien entre tous les éléments. :/

Mais bon, ta requête fonctionne très bien et je vais pouvoir l'utiliser en l'état. Donc même si je suis preneur d'infos supplémentaires, il n'y a aucune urgence. C'est juste pour me former d'avantage et ne pas simplement utiliser des outils conçus par d'autres (très sympas) dont je ne maitrise pas les tenants.

En tout cas encore merci pour ton aide précieuse.
Je retourne mettre les mains dans le cambouis ;)

Bonjour de nouveau,

Je débute sur Power Query et même encore après de nombreuses heures de vidéos de formation, je constate avoir encore beaucoup à apprendre sur cet outil si puissant !

Nous avons, avec cet outil, plus de 800 fonctions, constantes et autres valeurs à notre disposition ! Alors oui... effectivement cela exige un investissement personnel.
Mais le jeu en vaut la chandelle.

Ce que je ne pige pas en reprenant les étapes du coup c'est la fonction en elle-même. Est-ce une fonction écrite en dur avec du code ou cela peut-il être réalisé avec l'assistant ?

La fonction est créée en fonction de vos choix.
De mémoire, j'ai, dans cette partie là, simplement ajouté la transposition de la table pour être en mesure de remontrer les en-têtes.

Le "reste" est géré dans la requête principale, celle qui va combiner l'ensemble des fichiers du répertoire.

Rechercher des sujets similaires à "powerquery importer plages nommees dossier"