Exécuter une requête selon une condition

Accueil – Le CFO masqué Forums Power Query Exécuter une requête selon une condition

6 sujets de 1 à 6 (sur un total de 6)
  • Auteur
    Articles
  • #86789
    synetiax
    Participant

    Bonjour!

    Je récupère un chemin complet fourni par l’utilisateur dans une plage nommée d’Excel ainsi que le mois qui est dans une autre plage nommée.

    J’ai une requête A et une requête B.

    Je voudrais exécuter la requête A lorsque le mois n’est pas décembre et la requête B lorsque le mois est décembre.

    Je me doute que ça peut pas marcher comme ça mais je mets ce code qui serait dans l’éditeur avancé pour vous montrer ce que je cherche à atteindre (mes données sont confidentielles alors je ne peux pas vous les envoyer).

    Le but est de changé la source et les traitements à effectuer en fonction du mois donné.
    ————————————————————————————————
    let
    if Excel.CurrentWorkbook(){[Name=”PN_Mois”]}[Content]{0}[Column1] <> “Décembre” then
    ‘traitement requête A
    else
    ‘traitement requête B
    end if
    in
    ‘traitement

    #86794
    Kim Leblanc
    Participant

    Bonjour,

    Si le but est d’Actualiser une requête ou une autre selon le mois sélectionné, vous pourriez le faire en VBA en utilisant

    ActiveWorkbook.Connections(“Requête – Données”).Refresh

    Notez que vous devez désactiver l’option “Activer l’actualisation en arrière plan” dans les propriétés de la requête.
    Vous devez également inscrire “Requête – ” devant le nom de votre requête. Dans mon exemple, ma requête ce nomme Données.

    Vous pourrez alors utiliser un if / else pour la requête à actualiser selon le mois choisi (toujours en vba).

    Au plaisir,

    Kim

    #86943
    synetiax
    Participant

    Bonjour,

    J’ai créer un fichier pour mieux exprimer mon besoin.
    Vous trouverez 3 fichiers dans le zip (piton de droite sur le fichier zip> Extraire tout):

    Les fichier “C.xlsx” et “P.xlsx” qui contiennent les données et le fichier “Test.xlsm” qui contient le bug à résoudre.

    Dans le fichier “Test.xlsm” vous trouverez 4 requêtes.

    Les requêtes “ReqC” et “ReqP” transforment les fichiers sources “C.xlsx” et “P.xlsx”.
    La Requete1 affiche la “ReqC” ou la “ReqP” en fonction du chiffre inscrit dans la plage nommée PN_Data de l’onglet Excel “test1”.

    Le bug se trouve dans la requête “Requete2 dynamique” où j’essaie de tout faire dans une seule requête.

    Les fichiers sources ne seront jamais disponible en même temps. Lorsque le chiffre 5 est inscrit en PN_Data, seule le fichier “C” existera. Lorsque le chiffre inscrit en PN_Data sera différent de 5, seul le fichier P.xlsx sera disponible.

    Je viens juste d’avoir la formation Power Query alors c’est surement une virgule mal placée ou un truc dans le genre.

    Merci pour votre aide!

    Synetiax

    Attachments:
    You must be logged in to view attached files.
    #86962
    Kim Leblanc
    Participant

    Bonjour,

    Il faudrait remanier votre code de cette façon:
    Inscrire toutes les étapes pour le fichier C avec la dernière étape qui s’appelle #”Resultat 1″ puis vous enchaîné avec toutes les étapes pour le fichier P avec la dernière étape qui s’appelle #”Resultat 2″ puis à la fin mettre votre condition

    Final = if chiffre = 5
    then #”Resultat 1″
    else #”Resultat 2″

    in
    Final

    Il vous faudra des virgules après chaque étape, même entre la dernière du fichier C et la première du fichier P.
    Il vous faudra renommer vos différentes étapes puisqu’on ne peut avoir 2 étapes avec le même nom. Donc avoir un source1 pour C et Source2 pour P etc.

    #86964
    Kim Leblanc
    Participant

    Votre fichier avec les corrections (J’ai modifié la source puisque votre code pour aller chercher le répertoire et fichier ne fonctionnait pas de mon côté).

    Kim

    Attachments:
    You must be logged in to view attached files.
    #86970
    synetiax
    Participant

    Merci infiniment!

6 sujets de 1 à 6 (sur un total de 6)
  • Vous devez être connecté pour répondre à ce sujet.