Power query chemin relatif stocker dans une cellule

Bonjour,

je n'arrive pas à faire en sorte que power query prenne en compte un chemin d'accès (J:\XX\XX\XX) inscrit dans la cellule B1 de mon tableau.

Power query est lancé à partir d'un commandbutton1

Private Sub CommandButton1_Click()

' efface les requetes existantes
Dim cn As WorkbookConnection, qry As WorkbookQuery
    On Error Resume Next
    For Each cn In ActiveWorkbook.Connections
        cn.Delete
    Next cn
    For Each qry In ActiveWorkbook.Queries
        qry.Delete
    Next qry

'power query
    Application.CutCopyMode = False
    ActiveWorkbook.Queries.Add Name:="s�lection", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Folder.Files(""J:\XX\XX\XX"")" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=s�lection;Extended Properties=""""" _
        , Destination:=Range("$b$3")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [s�lection]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "s�lection"
        .Refresh BackgroundQuery:=False
    End With

End Sub

J'ai piqué des codes à droite gauche mais la je bloque, je n'arrive pas à coder la récupération de la valeur B1 en chemin relatif (ou absolue ).

Si vous avez l'astuce, merci d'avance.

Bonjour,

Le principe est de nommer cette cellule B1 par "Rep_Fich", par exemple.. Et dans cette cellule, mettre le chemin (sans le \ de fin..)

Puis dans le code de création, mettre ceci au début, après :

...
...
'power query
Application.CutCopyMode = False
ActiveWorkbook.Names.Add Name:="Rep_Fich", RefersToR1C1:="=Feuil1!R1C2" 'pour rajouter le nom à la cellule B1
ActiveWorkbook.Queries.Add Name:="s�lection", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name=""Rep_Fich""]}[Content]))" &         Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"
...
'Reste du code
...

PS, pense à mettre à jour ta version Excel, je doute fort déjà qu'Excel 2008 existe, ou le cas échéant, qu'il supporte PQ...

Bon courage

PS2, je ne vois pas trop l'intérêt de recréer une requête à chaque fois, est-ce que mettre un nouveau répertoire dans la cellule B1 ne serait pas suffisant...

Auquel cas, la Source deviendrait :

Source = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name="Rep_Fich"]}[Content]))

Peut-être?

Salut Cousinhub,

alors ça marche pour la requête en connexion cela prend bien en compte la source située dans la cellule B1 renommée "Rep_Fich" en dur directement sur la feuille Excel, par contre ça ne charge pas.

J'ai tenté de delete les cellules qui sont censées recevoir la table de power query. Mais le chargement ne se fait tout de même pas.

Voici le code :

Private Sub CommandButton1_Click()

' efface les requetes existantes
Dim cn As WorkbookConnection, qry As WorkbookQuery
 On Error Resume Next

    For Each cn In ActiveWorkbook.Connections
        cn.Delete
    Next cn
    For Each qry In ActiveWorkbook.Queries
        qry.Delete
    Next qry

'efface les cellules cible
ActiveWorkbook.ActiveSheet.Range("B3:G99").Delete

'power query
Application.CutCopyMode = False
'ActiveWorkbook.Names.Add Name:="Rep_Fich", RefersToR1C1:="=Feuil1!R1C2" 'pour rajouter le nom à la cellule B1
ActiveWorkbook.Queries.Add Name:="selection", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name=""Rep_Fich""]}[Content]))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"

    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Feuil1;Extended Properties=""""" _
        , Destination:=Range("$b$3")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [selection]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "selection"
        .Refresh BackgroundQuery:=False
    End With

End Sub

PS : version Excel 365 si je ne m'abuse, en tout cas le power query fonctionne.

PS' : Si on peut faire maigrir le code je prends, mais injecter Source = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name="Rep_Fich"]}[Content])) dans le cas ci dessus, j'en suis malheureusement incapable (maitrise pas assez la synthaxe)

Voici le code qui semble marcher.

Private Sub CommandButton1_Click()

' efface les requetes existantes
Dim cn As WorkbookConnection, qry As WorkbookQuery
 On Error Resume Next

    For Each cn In ActiveWorkbook.Connections
        cn.Delete
    Next cn
    For Each qry In ActiveWorkbook.Queries
        qry.Delete
    Next qry

'efface les cellules cible
ActiveWorkbook.ActiveSheet.Range("B3:G99").Delete
'power query
Application.CutCopyMode = False
'ActiveWorkbook.Names.Add Name:="Rep_Fich", RefersToR1C1:="=Feuil1!R1C2" 'pour rajouter le nom à la cellule B1
ActiveWorkbook.Queries.Add Name:="selection", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name=""Rep_Fich""]}[Content]))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"

    Application.CutCopyMode = False
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=selection;Extended Properties=""""" _
        , Destination:=Range("$B$3")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [selection]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "selection"
        .Refresh BackgroundQuery:=False
    End With

End Sub

merci pour tout cousinhub.

Rechercher des sujets similaires à "power query chemin relatif stocker"