[Power Query] Modification des paramètres d'une requête en VBA

Bonjour à tous,

Je sèche sur un problème, et l’enregistreur de Macro ne me donne même pas de pistes ...

Je m'explique :

J'utilise "Requêtes et connexion" pour importer régulièrement un fichier html (une table uniquement) dans mon tableau Excel.

Parfois le format de cette table change (nommage et ajout de colonnes)

Je sais détecter ces changements, et je sais mettre ma requête à jour manuellement :

"Requete et connexions" / double clique sur ma table / Editeur avancé puis je modifie à la main le "fichier" suivant

let

Source = Web.Page(File.Contents("C:\Import.html")),

Data1 = Source{1}[Data],

#"Type modifié" = Table.TransformColumnTypes(Data1,{{"Type", type text},{"Clé", type text}, {"Choix", type text}, {"Resumé", type text},})

in

#"Type modifié"

Je ferme, je charge, Touchdown, tout va bien ...

Mais j’aimerais automatiser ce process cad éditer (en VBA) ce "fichier" descripteur avant de lancer la synchro.

Et, cerise sur le gâteau, je voudrais pouvoir lancer le choix du fichier directement, sans passer par "paramètre de la source de données" dans la fenêtre PowerQuery

Toute piste serait la bienvenue !

Merci de votre aide

Pierre

Alors j'ai avancé d'un cran en comprenant que l'enregistreur de macro fonctionne quand j'effectue tout l'import, et pas uniquement la modification ...

Du coup j'ai ça, je progresse ...

ActiveWorkbook.Queries.Add Name:="Table 1", Formula:= _

"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(File.Contents(""C:\import.html""))," & Chr(13) & "" & Chr(10) & " Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(Data1,{{""Type"", type text}, {""Clé"", type text}, {""Choix"", type text}, {""Résumé"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié"""

ActiveWorkbook.Worksheets.Add

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _

"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 1"";Extended Properties=""""" _

, Destination:=Range("$A$1")).QueryTable

.CommandType = xlCmdSql

.CommandText = Array("SELECT * FROM [Table 1]")

.RowNumbers = False

.FillAdjacentFormulas = False

.PreserveFormatting = True

.RefreshOnFileOpen = False

.BackgroundQuery = True

.RefreshStyle = xlInsertDeleteCells

.SavePassword = False

.SaveData = True

.AdjustColumnWidth = True

.RefreshPeriod = 0

.PreserveColumnInfo = True

.ListObject.DisplayName = "Table_1"

.Refresh BackgroundQuery:=False

End With

End Sub

Mais ya encore du boulot ...

J'ai finalement ma solution :

 'On efface la précédente requête
 ActiveWorkbook.Queries("Table 1").Delete 

'On modifie les champs (nouvelle requête)
ActiveWorkbook.Queries.Add Name:="Table 1", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Web.Page(File.Contents(""C:\import.html""))," & Chr(13) & "" & Chr(10) & " Data1 = Source{1}[Data]," & Chr(13) & "" & Chr(10) & " #""Type modifié"" = Table.TransformColumnTypes(Data1,{{""Toto"", type text}, {""Tata"", type text}, {""Choix"", type text}, {""Résumé"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Type modifié"""

'On force la MAJ
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
Rechercher des sujets similaires à "power query modification parametres requete vba"