Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau membre du Club
    Personnaliser "l'interieur" d'un Table.Combine d'une requête multiple
    Bonjour

    J'ai crée avec power query une requête recuperant 3 requêtes : espaces, canapé, couscous

    Une boucle modifie ma variable String ongle selon le besoin (desfois je veux combiner d'autres requêtes déjà existantes)

    La problème : dans ma requête ci-dessous, quand je remplace Source = Table.Combine({espaces, canapé, couscous}) par Source = Table.Combine(ongle), ca ne fonctionne pas, il me met le message d'erreur c-dessous à l’exécution.



    Ma question est donc, pourquoi Table.Combine() ne prend pas de String en paramètre et comment y remédier.
    Ma 2eme nuit blanche vient de passer sur le sujet, je donne ma langue au chat

    Voici ci-joint un fichier que j'ai crée pour illustrer l'exemple, avec 4 requêtes crées, et la macro qui fait une requête combinée avec ces 4 requêtes ( Mais desfois moins desfois plus, selon ce qui est voulu en entrée)

    Très bonne journée

    EDIT : j'ai trouvé ceci, mais je ne sais pas si cela peut m'aider : https://www.mrexcel.com/board/thread...cename.949532/

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub Macro1()
    
    ActiveWorkbook.Queries("Ajouter1").Delete
    
    Dim ongle As String
    ongle = "{espaces, canapé, couscous}"
    
        ActiveWorkbook.Queries.Add Name:="Ajouter1", Formula:= _
            "let" & Chr(13) & "" & Chr(10) & "    Source = Table.Combine({espaces, canapé, couscous})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Source"
        ActiveWorkbook.Worksheets.Add
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=Ajouter1;Extended Properties=""""" _
            , Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array("SELECT * FROM [Ajouter1]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Test12121212"
            .Refresh BackgroundQuery:=True
        End With
    End Sub

  2. #2
    Membre expérimenté
    Hello,

    Pas de Pc dispo pour le moment, fin d'année arrivant, un bon cleaning et réinstallation s'imposait.
    Perso, je travaillerais autrement.

    Par défaut, je combinerais toutes les tables du classeurs.
    Un colonne supplémentaire contenant le nom des tables importées.
    Dans la table combinée, un simple filtre mettrais à disposition les enregistrements voulu.
    Voir même directement base un filtre par Power query, car tuto a ce sujet de Pierre Fauconnier, qui ne retournerait dans la feuille que les enregistrements souhaités.

    Bav
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  3. #3
    Nouveau membre du Club
    Je suis d'accord avec la manière de faire. Mais j'ai besoin de bosser avec les requêtes combinée pour des raisons qui me sont exterieures
    Entre temps j'ai trouvé la solution, il suffit de bien faire attention aux guillemets !

    ActiveWorkbook.Queries.Add Name:="Ajouter1", Formula:= _
    "let" & Chr(13) & "" & Chr(10) & " Source = Table.Combine({" & ma_variable_String & "})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " Source"

    En fait Formula n'est qu'un enchainement de chaine de caractere concatenée qui sont passé dans l'outil de traitement de requetes, j'ai mis toute l'après midi à m'en rendre compte ahahaha

###raw>template_hook.ano_emploi###