Power Query Changer Requete POWER QUERY VBA

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Je vous explique mon problème . Je suis en train de construire un fichier de suivi Chiffre d'affaires sur 12 mois ( 1 onglet par mois )
Intégrant la notion de CA Facturé , de CA provisionnel grace à des exports de mon ERP ( Requete ODBC )

Aurjourd'hui , j'ai construit 3 types de requete qui se mette a jour selon mois
1 requête CA facturée qui va cherché toutes les factures CLIENT
1 requete CA mois en Cours ( CA FACTUREE + PREVISIONNEL )
1 requete CA Previsionnel qui va chercher le carnet de commande à venir

Je souhaiterais via une commande VBA changer la Requete à utiliser selon mois
Exemple pour ce mois-ci
Onglet Janvier 2019 = CA FACTUREE
Onglet Fevrier 2019 = CA FACTUREE
Onglet MARS 2019 = CA FACTUREE
Onglet Avril 2019 = CA FACTUREE
Onglet MAi 2019 = CA FACTUREE
Onglet Juin 2019 = CA FACTUREE
Onglet Juillet 2019 = CA FACTUREE
Onglet Aout 2019 = CA FACTUREE
Onglet Septembre 2019 = CA MOIS_EN_COURS
Onglet Octobre 2019 = CA PREVI
Onglet Novembre 2019 = CA PREVI
Onglet Décembre 2019 = CA PREVI

Pour le mois Prochain , que la commande VBA change les Appel de Requete
Onglet Janvier 2019 = CA FACTUREE
Onglet Fevrier 2019 = CA FACTUREE
Onglet MARS 2019 = CA FACTUREE
Onglet Avril 2019 = CA FACTUREE
Onglet MAi 2019 = CA FACTUREE
Onglet Juin 2019 = CA FACTUREE
Onglet Juillet 2019 = CA FACTUREE
Onglet Aout 2019 = CA FACTUREE
Onglet Septembre 2019 = CA FACTUREE
Onglet Octobre 2019 = CA MOIS_EN_COURS
Onglet Novembre 2019 = CA PREVI
Onglet Décembre 2019 = CA PREVI

Seul Options que j'ai trouvé est de fonctionner avec 3 onglets par mois que je masquerais ou afficherais
Option qui marche mais qui me semble lourde

Merci encore pour votre aide

Bibbip35
 

chris

XLDnaute Barbatruc
RE

Il y a une logique qui est le mois en cours : filtrer par rapport à une cellule risque de casser toute la logique.
Comme dit à plusieurs reprises c'est la dernière colonne de l'onglet facture_MOIS_en_COURS est déterminante

Tout autre filtre n'aurait pas de sens et renverrait des données inconsistantes.
Relis ton 1er post au début de ce fil.
 

bibbip35

XLDnaute Occasionnel
Bonsoir

J'ai bien compris pour ce cas de figure mais c'est pour une autre requete que j'utilise
enfin plus precisement une connexion ODBC

SELECT

RAISON_SOCIALE,
EDITEE_LE=list(FACTURE_CLIENT.EDITEE_LE),
COMMANDE_CLIENT=list(CMDE_CLIENT.CMDE_CLIENT),
COMMANDE_ADEX=POSTES_CMDE_CLIENT.CMDE_CLIENT,
DATE_DEMANDE=POSTES_CMDE_CLIENT.DATE_SOUHAITEE,
DATE_COMMANDE=CMDE_CLIENT.DATE_COMMANDE,
ID_POSTE_CMDE=(ID_POSTE_CMDE_CLIENT),
REF_EXCALIBUR=postes_cmde_client.PRODUIT,
DESIGNATION=(POSTES_CMDE_CLIENT.DESIGNATION),
QTE_CMDE=(POSTES_CMDE_CLIENT.QUANTITE),
CODE_FACTURE=list(FACTURE_CLIENT),
ID_POSTE_FACTURE=list(ID_POSTE_FACT_CLIENT),
QTE_FACTURE=(sum(POSTES_FACT_CLIENT.QUANTITE)),
PRIX_UNIT_MOYEN =
CASE
WHEN type_doc like 'A' THEN (SUM(postes_fact_client.PRIX_UNITAIRE_EU*POSTES_FACT_CLIENT.QUANTITE))/QTE_FACTURE*(-1)
ELSE (SUM(postes_fact_client.PRIX_UNITAIRE_EU*POSTES_FACT_CLIENT.QUANTITE))/QTE_FACTURE
END,
TOTAL_CMDE=(QTE_CMDE * PRIX_UNIT_MOYEN),

CA_REALISER=(QTE_FACTURE * PRIX_UNIT_MOYEN),
QTE_LIVREE_CMDE=list(POSTES_CMDE_CLIENT.QTE_LIVREE),
RESTANT_A_LIVRER=list(POSTES_CMDE_CLIENT.QTE_A_LIVRER),
CA_PREVI=sum(POSTES_CMDE_CLIENT.QTE_A_LIVRER*postes_fact_client.PRIX_UNITAIRE_EU),
LIVRE=sum((POSTES_CMDE_CLIENT.QTE_LIVREE-POSTES_CMDE_CLIENT.QTE_RETOURNEE)*postes_fact_client.PRIX_UNITAIRE_EU)
FROM
POSTES_CMDE_CLIENT
LEFT OUTER JOIN POSTES_BL_CLIENT ON POSTES_CMDE_CLIENT.CMDE_CLIENT = POSTES_BL_CLIENT.CMDE_ORIGINE AND POSTES_CMDE_CLIENT.ID_POSTE_CMDE_CLIENT = POSTES_BL_CLIENT.ID_POSTE_CMDE_ORIGINE AND POSTES_CMDE_CLIENT.PRODUIT = POSTES_BL_CLIENT.PRODUIT
FULL OUTER JOIN POSTES_FACT_CLIENT ON BL_CLIENT = POSTES_FACT_CLIENT.BL_ORIGINE AND POSTES_BL_CLIENT.ID_POSTE_BL_CLIENT = POSTES_FACT_CLIENT.ID_POSTE_BL_ORIGINE AND POSTES_BL_CLIENT.PRODUIT = POSTES_FACT_CLIENT.PRODUIT
LEFT OUTER JOIN CMDE_CLIENT ON CODE_COMMANDE = POSTES_CMDE_CLIENT.CMDE_CLIENT
LEFT OUTER JOIN CLIENTS ON CMDE_CLIENT.CLIENT = CODE_CLIENT
LEFT OUTER JOIN FACTURE_CLIENT ON POSTES_FACT_CLIENT.FACTURE_CLIENT = FACTURE_CLIENT.CODE_FACTURE
WHERE
MONTH(FACTURE_CLIENT.EDITEE_LE) = ?
AND
YEAR(FACTURE_CLIENT.EDITEE_LE) =?
GROUP BY
RAISON_SOCIALE,
CMDE_CLIENT.CMDE_CLIENT,
COMMANDE_ADEX,
DATE_COMMANDE,
DATE_DEMANDE,
postes_cmde_client.PRODUIT,type_doc,
ID_POSTE_CMDE,
DESIGNATION,
QTE_CMDE

Est-il possible d'avoir une variable avec une requete POWER QUERY tous comme les connexions
Avec les points interrogations , je peux pointer sur les cellules de mon choix

MERCI ENCORE

Bibbip35
 

bibbip35

XLDnaute Occasionnel
Bonsoir

Je viens de tester et je dois faire une erreur malgré que j'ai bien creer un nom pour l'année et le mois

Vous trouverez ci-dessous la requete que j'ai revu avec 2 variable


SELECT

RAISON_SOCIALE,
EDITEE_LE=list(FACTURE_CLIENT.EDITEE_LE),
COMMANDE_CLIENT=list(CMDE_CLIENT.CMDE_CLIENT),
COMMANDE_ADEX=POSTES_CMDE_CLIENT.CMDE_CLIENT,
DATE_DEMANDE=POSTES_CMDE_CLIENT.DATE_SOUHAITEE,
DATE_COMMANDE=CMDE_CLIENT.DATE_COMMANDE,
ID_POSTE_CMDE=(ID_POSTE_CMDE_CLIENT),
REF_EXCALIBUR=postes_cmde_client.PRODUIT,
DESIGNATION=(POSTES_CMDE_CLIENT.DESIGNATION),
QTE_CMDE=(POSTES_CMDE_CLIENT.QUANTITE),
CODE_FACTURE=list(FACTURE_CLIENT),
ID_POSTE_FACTURE=list(ID_POSTE_FACT_CLIENT),
QTE_FACTURE=(sum(POSTES_FACT_CLIENT.QUANTITE)),
PRIX_UNIT_MOYEN =
CASE
WHEN type_doc like 'A' THEN (SUM(postes_fact_client.PRIX_UNITAIRE_EU*POSTES_FACT_CLIENT.QUANTITE))/QTE_FACTURE*(-1)
ELSE (SUM(postes_fact_client.PRIX_UNITAIRE_EU*POSTES_FACT_CLIENT.QUANTITE))/QTE_FACTURE
END,
TOTAL_CMDE=(QTE_CMDE * PRIX_UNIT_MOYEN),

CA_REALISER=(QTE_FACTURE * PRIX_UNIT_MOYEN),
QTE_LIVREE_CMDE=list(POSTES_CMDE_CLIENT.QTE_LIVREE),
RESTANT_A_LIVRER=list(POSTES_CMDE_CLIENT.QTE_A_LIVRER),
CA_PREVI=sum(POSTES_CMDE_CLIENT.QTE_A_LIVRER*postes_fact_client.PRIX_UNITAIRE_EU),
LIVRE=sum((POSTES_CMDE_CLIENT.QTE_LIVREE-POSTES_CMDE_CLIENT.QTE_RETOURNEE)*postes_fact_client.PRIX_UNITAIRE_EU)
FROM
POSTES_CMDE_CLIENT
LEFT OUTER JOIN POSTES_BL_CLIENT ON POSTES_CMDE_CLIENT.CMDE_CLIENT = POSTES_BL_CLIENT.CMDE_ORIGINE AND POSTES_CMDE_CLIENT.ID_POSTE_CMDE_CLIENT = POSTES_BL_CLIENT.ID_POSTE_CMDE_ORIGINE AND POSTES_CMDE_CLIENT.PRODUIT = POSTES_BL_CLIENT.PRODUIT
FULL OUTER JOIN POSTES_FACT_CLIENT ON BL_CLIENT = POSTES_FACT_CLIENT.BL_ORIGINE AND POSTES_BL_CLIENT.ID_POSTE_BL_CLIENT = POSTES_FACT_CLIENT.ID_POSTE_BL_ORIGINE AND POSTES_BL_CLIENT.PRODUIT = POSTES_FACT_CLIENT.PRODUIT
LEFT OUTER JOIN CMDE_CLIENT ON CODE_COMMANDE = POSTES_CMDE_CLIENT.CMDE_CLIENT
LEFT OUTER JOIN CLIENTS ON CMDE_CLIENT.CLIENT = CODE_CLIENT
LEFT OUTER JOIN FACTURE_CLIENT ON POSTES_FACT_CLIENT.FACTURE_CLIENT = FACTURE_CLIENT.CODE_FACTURE
WHERE
MONTH(FACTURE_CLIENT.EDITEE_LE) = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name="ANNEE_MOIS_1"]}[Content]))
AND

YEAR(FACTURE_CLIENT.EDITEE_LE) = Folder.Files(Table.FirstValue(Excel.CurrentWorkbook(){[Name="MOIS_MOIS_1"]}[Content]))


GROUP BY
RAISON_SOCIALE,
CMDE_CLIENT.CMDE_CLIENT,
COMMANDE_ADEX,
DATE_COMMANDE,
DATE_DEMANDE,
postes_cmde_client.PRODUIT,type_doc,
ID_POSTE_CMDE,
DESIGNATION,
QTE_CMDE


Merci encore !
 

Discussions similaires