Microsoft 365 ouvrir le chemin d'une power query manuellement

iliess

XLDnaute Occasionnel
bonjour
voici mon code qui automatise l'ouverture d'une power Query
je souhaite que le chemin se faire d'une manière manuelle.

VB:
Sub Macro2()

    ActiveWorkbook.Queries.Add Name:="JournalReport", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Excel.Workbook(File.Contents(""C:\Users\ilies\Downloads\JournalAux.xlsx""), null, true)," & Chr(13) & "" & Chr(10) & "    JournalReport_Sheet = Source{[Item=""JournalReport"",Kind=""Sheet""]}[Data]," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(JournalReport_Sheet,{{""Column1"", type any}, {""Column2"", type any}, {""Column3"", type text}, {""Column4"", type text}, {""C" & _
        "olumn5"", type text}, {""Column6"", type text}, {""Column7"", type text}, {""Column8"", type text}, {""Column9"", type any}, {""Column10"", type datetime}, {""Column11"", type any}})" & 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=JournalReport;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [JournalReport]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "JournalReport"
        .Refresh BackgroundQuery:=False
    End With
End Sub

Svp comment modifier ce code pour que ce chemin C:\Users\ilies\Downloads\JournalAux.xlsx" ce mettre manuellement c'est a dire obtenir cette fenêtre avant l'exécution du code.
Merci


Capture d’écran 2023-03-04 212034.png
 

chris

XLDnaute Barbatruc
Bonjour

La bonne pratique est de créer une requête dans PowerQuery, et non VBA, requête prévue pour se baser sur un paramètre.

Le paramètre peut être passé par une cellule nommée, éventuellement alimentée par VBA, ou être un paramètre POwerQuery modifié par VBA

Utiliser un pseudo dialogue, Application.GetOpenFilename, pour laisser le choix à l'utilisateur et récupérer celui-ci
 

iliess

XLDnaute Occasionnel
merci Mr Chris pour votre message
J'ai appliqué la deuxième et la troisième consignes de votre message.
et la premiere je ne sais pas comment l'appliquer.

voici le code
VB:
Sub Deternination_Chemin()
Dim Chem As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        
            If .Show = True Then
                Chem = .SelectedItems(1)
                Range("A1").Value = Chem
            Else
                
                Exit Sub
            
            End If
    End With
End Sub
 

chris

XLDnaute Barbatruc
RE

Pour le solution de la cellule nommée il faut donc nommer A1, Fichier par exemple

Et la requête utilisera
VB:
Excel.Workbook(File.Contents(Excel.CurrentWorkbook(){[Name="Fichier"]}[Content][Column1]{0} ), null, true)

comme source

Il faut en général régler les paramètres de confidentialité de PowerQuery
Fichier, Options et paramètres, Options de requête, partie GLOBAL : Confidentialité, Toujours ignorer les paramètres de niveau de confidentialité
 

Discussions similaires

Réponses
22
Affichages
3 K

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm