Mise à jour paramètre power query et Refresh

Bonjour à tous,

Premier message sur ce forum très souvent consulté, j'espère toquer à la bonne porte !

J'utilise un fichier excel qui comporte une requête au travers d'une connexion vers une API externe (via power query).

Cette connexion comporte des données de production mensuelle et il est donc nécessaire de mettre à jour la requête manuellement au travers de l'éditeur Power query, et de rafraichir les données à importer dans le tableau cible (toujours le même, mis à jour chaque mois).

Pour cela je clique donc sur la requête pour lancer l'éditeur Power Query et, dans l'éditeur avancé, change la requête avec les paramètres du mois qui m'intéresse. Ensuite je "ferme et charge" cette fenêtre pour visualiser les données mises à jour dans le tableau cible.

En VBA je parviens à récupérer le contenu avancé de la requête et d'en modifier les paramètres.

Set aw = ActiveWorkbook

Dim ws As Worksheet

a = "requete1"

Set q = aw.Queries(a)

t = q.Formula

T1 = Replace(t, "start=20210201&end=20210301", "start=20210101&end=20210201")

Je souhaiterai, au travers d'un code vba, remplacer le texte mis à jour dans l'éditeur avancé et recharger la requête dans mon tableau cible.

Je suis donc preneur d'aide pour cela !

Merci à vous.

Hugo

Bonjour

Il n'est pas nécessaire d'utiliser VBA.

Tu peux stoker des valeurs ou textes dans une cellules nommée et y faire référence dans la requête en lieu et place d'une valeur en dur

Peux tu poster le code M de la requête ou au moins la partie qui utilise le paramètre

Bonjour 78chris et merci pour ton retour

J'ai déjà un code vba qui génère notamment les dates de début et de fin pour d'autres usages.
J'aurai justement souhaité intégrer cet update dans cette macro.

Voici le code de la requête

let <br>

Source = Csv.Document(Web.Contents("XXXX/datapi/ series?data=solarimeter.solar_energy&site=all&device=Meteosat&start=20210201&end=20210301&aggregation=month&locale=FR_fr"),[Delimiter=";", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]), <br>

#"En-têtes promus" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), <br>

#"Type modifié" = Table.TransformColumnTypes(#"En-têtes promus",{{"date", type datetime}, {"site", type text}, {"device", type text}, {"solar_energy", type number}}), <br>

#"Lignes filtrées" = Table.SelectRows(#"Type modifié", each ([device] = "Meteosat")) in #"Lignes filtrées"

RE

Tu peux créer 2 cellules nommées Start et End que tu modifies par VBA et utiliser

Source = Csv.Document(Web.Contents("XXXX/datapi/ series?data=solarimeter.solar_energy&site=all&device=Meteosat&start="&Excel.CurrentWorkbook(){[Name="Start"]}[Content][Column1]{0}"&end="&Excel.CurrentWorkbook(){[Name="End"]}[Content][Column1]{0}&"& aggregation=month&locale=FR_fr"),[Delimiter=";", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]), <br>

Merci cela fonctionne parfaitement !

Rechercher des sujets similaires à "mise jour parametre power query refresh"