Power Query - source de données

Bonjour

Je quitte la société dans laquelle je travaillais et j'aimerais qu'ils puissent continuer d'utiliser mes fichiers. Sauf qu'ils n'ont ni les compétences Excel ni l'envie ni le temps de les acquérir; du coup j''essaie de faire simple (un tuto avec des impr. ecran a suivre et le moins de trucs compliqués possible dans mes tableaux ). Sauf que j'ai une Query qui va chercher une BDD dans un fichier Excel importé d'un website. Je n'ai pas réussi a rapatrier directement la BDD depuis le Website sur mon ficier Excel, et ils n'utiliseront pas Zapier, donc j'ai 3 solutions :

  • Leur demander de renommer le fichier d'export toujours de la meme facon (ils ne le feront pas )
  • leur permettre de modifier la source de BDD de la query (mais s'ils touchent a la query ils risquent de faire des betises ils l'ont déja fait)
  • Coller le contenu du fichier exporté dans un onglet du fichier Excel et faire partir mes query depuis celui ci

Du coup...

Peut on modifier la source de la Query sans entrer dans la query?? Je vois que le menu des connexions ne montre pas les liens externes ("edit link" est grisé), et pour l'instant je n'ai trouvé qu'en entrant dans la query (Home --> DATA source settings)

Merci d'avance pour votre aide

Bonjour

On peut mettre chemin et nom de fichier dans une cellule nommée d'un onglet et utiliser son contenu comme variable dans PowerQuery

Bonjour

On peut mettre chemin et nom de fichier dans une cellule nommée d'un onglet et utiliser son contenu comme variable dans PowerQuery

Wouhaou! Ca c'est top!

Par contre je suis pas au point...

Je met le chemin du fichier dans une cellule B1, le nom du fichier dans B2, et je crée la formule "Path" qui est égale a

=$B$1&"\"&$B$2

Je suis pas sure de partir du bon pied, mais ensuite ca plante donc je dois pas y etre... :

Dans ma query, je modifie ma source en mettant Path a la place de mon précédent chemin et nom de fichier :

  Source = Excel.Workbook(File.Contents("Path"), null, true)

et j'obtiens le message d'erreur :

"DataForma.Error : The supplied file path must be a valid absolute path. 
Details: 
Path

J'ai aussi essayé de suivre ce tuto (

) en basant mes recherches google sur votre indice, mais ca ne marche pas plus...

Comment faire pour utiliser le contenu comme variable de la source dans PowerQuery?

Merci encore

RE

Non, le nom doit correspondre à une cellule donc soit tu nommes chaque cellule, soit tu crées la 3ème avec la concaténation et tu utilise le nom de cette 3ème cellule.

Où alors crée un tableau de 2 colonnes et une ligne pour récupérer les 2 valeurs du tableau.

Pour récupérer une cellule nommée Path

Fichier =Excel.CurrentWorkbook(){[Name="Path"]}[Content][Column1]{0},
Source  = Excel.Workbook(File.Contents(Fichier), null, true),

Pour un tableau nommé Dossier avec une colonne Chemin et une colonne Fichier

    Chemin=Excel.CurrentWorkbook(){[Name="Dossier"]}[Content][Chemin]{0},
    Fichier=Excel.CurrentWorkbook(){[Name="Dossier"]}[Content][Fichier]{0},
    Source = Excel.Workbook(File.Contents(Chemin&"/"&Fichier), null, true)

Top merci !

(Je n'ai pas réussi a le faire directement sur ma ligne de source mais en fait il suffit d'aller dans home --> advanced editor. Je marque ca ici histoire de m'en souvenir plus tard au cas où )

RE

Oui je n'avais pas précisé mais c'est cela.

Hello

Pour une autre de mes sources, j'utilisais une query qui faisait une boucle en allant chercher des valeurs sur une source externe via une formule nommée.

Ma formule nommée est celle ci :

_F_UnitPrice_FromVlookup=VLOOKUP(Unit_Price[@Subject],'G:\chemin\...\[fichier a récupérer.xlsx]Sheet1'!$C:$J,HLOOKUP($H$1,'G:\chemin\...\[fichier a récupérer.xlsx]Sheet1'!$1:$2,2,FALSE),FALSE)

Elle s'integre dans mon tableau de cette facon :

=IF(T_Unit_Price[@[Manual Unit Price]]="",_F_UnitPrice_FromVlookup,T_Unit_Price[@[Manual Unit Price]])

et ensuite ma query récupere soit la valeur quon attribue au matériel dans la colonne suivante, soit la valeur par défaut contenue dans le fichier a récupérer.

(au final; j'ai un fichier avec les prix unitaires standards de mon matériel, mais en cas de spécifications sur le matériel, on peut entrer un prix unitaire différent et le tableau qui reprend les lignes de la BDD se met a jour dans la query)

J'aimerais que le chemin utilisé dans la formule nommée soit modifiable par un utilisateur lambda (=qui n'y connait rien a Excel et ne veut pas apprendre). Idéalement, cette formule se fournirait dans une cellule de concaténation qui prendrait une cellule avec le chemin d'un coté et une cellule avec le nom du fichier a récupérer de l'autre; comme pour la query plus haut dans ce fil...

Mais sur mes essais, ça ne marche pas du tout... Est-ce possible d'abord (ça ou une solution alternative)?

Et si oui comment faire?

Merci beaucoup

RE

Le problème est qu'il n'est pas possible d'utiliser INDIRECT pour un classeur externe

Donc sauf à introduire du VBA pour modifier le lien du classeur...

Re

Je n'utilise pas indirect (que je ne comprend toujours pas donc que je n'utilise pas sauf exception ) mais rechercheV, c'est pareil?

RE

Pour changer la référence à une feuille ou à un fichier INDIRECT est utile

par exemple si tu as des mois dans une colonne(Janvier à Décembre) et des feuilles portant ces mêmes noms, tu peux te servir du nom du mois avec INDIRECT pour pointer la bonne feuille et avoir une seule formule identique de Janvier à Décembre.

Pour le fichier c'est pareil sauf que cela ne marche que si le fichier est ouvert...

Cela n'a rien à voir avec RECHERCHEV : cela sert quasi exclusivement à construire des références

Ok, mais du coup Indirect ne marche pas ici .

Ce que je voudrais dans l'idéal, c'est que la référence au nom du fichier dans ma fonction

_F_UnitPrice_FromVlookup=VLOOKUP(Unit_Price[@Subject],'G:\chemin\...\[fichier a récupérer.xlsx]Sheet1'!$C:$J,HLOOKUP($H$1,'G:\chemin\...\[fichier a récupérer.xlsx]Sheet1'!$1:$2,2,FALSE),FALSE)

soit dans une autre cellule, mais utiliser "&" ou "concatenation" ne marche pas

Je pensais a faire quelquechose comme ca :

_F_UnitPrice_FromVlookup=VLOOKUP(Unit_Price[@Subject], Cellule dans laquelle j'ai mon chemin \ Cellule dans laquelle j'ai mon nom de fichier Sheet1'!$C:$J,HLOOKUP($H$1, Cellule dans laquelle j'ai mon chemin \ Cellule dans laquelle j'ai mon nom de fichierSheet1'!$1:$2,2,FALSE),FALSE)

Ya aucun moyen de parvenir a ca?

RE

NON !

Seul INDIRECT permet de définir une référence par concaténation, avec la limité énoncée pour un fichier, sinon VBA...

ok, merci

Rechercher des sujets similaires à "power query source donnees"