POWERQUERY :: M et Astuces diverses

  • Initiateur de la discussion Initiateur de la discussion oguruma
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

oguruma

XLDnaute Occasionnel
Bonjour, ci-dessous quelque petites astuces....

Déterminer quelles sont les colonnes à afficher

Tout simplement !
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements
        [
            [DOMAINE], [APPLI], [OK]
        ]
in
    Source

On adresse directement un RECORD via la source en spécifiant les colonnes à extraire.

Sinon nous aurions procédé comme suit :
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements,
    TBL_DeleteColumns = Table.RemoveColumns(Source,{"CERTIF_1", "CERTIF_2", "CERTIF_3"})
in
    TBL_DeleteColumns

ou comme cela :
PowerQuery:
let
    Source = TBL_SRC_DATA_Traitements,
    TBl_SelectColumns = Table.SelectColumns(Source,{"DOMAINE", "APPLI", "OK"})

in
    TBl_SelectColumns

Un PROMOTE pas à pas
PowerQuery:
let
    Source = Excel.Workbook(File.Contents(PRM_STR_FichierXLSX), true, true),
    TBL_Sheet = Source{[Item="Traitements",Kind="Sheet"]}[Data]
in
    TBL_Sheet

Construire des propriétés via un RECORD
PowerQuery:
[
    Source = Excel.Workbook(File.Contents(PRM_STR_FichierXLSX), true, true),
    FLD_Sheet = Source{[Item="Traitements",Kind="Sheet"]}[Data],
    FLD_Domaine = FLD_Sheet[[DOMAINE]],
    LST_Domaine = List.Distinct(FLD_Sheet[DOMAINE]),
    FLD_Appli = FLD_Sheet[[APPLI]],
    LST_Appli = FLD_Sheet[APPLI],
    FLD_Certif1 = FLD_Sheet[[CERTIF_1]],
    FLD_Certif2 = FLD_Sheet[[CERTIF_2]],
    FLD_Certif3 = FLD_Sheet[[CERTIF_3]],
    FLD_OK = FLD_Sheet[[OK]],
    FLD_RECORD = FLD_Sheet[[DOMAINE],[APPLI],[CERTIF_1],[CERTIF_2],[CERTIF_3],[OK]],
    FLD_GROUP_BY_DOMAINE=Table.Group(FLD_Sheet, {"DOMAINE"},
        {
            {"Total_Certif_1", each List.Sum([CERTIF_1]), type number},
            {"Total_Certif_2", each List.Sum([CERTIF_2]), type number},
            {"Total_Certif_3", each List.Sum([CERTIF_3]), type number},          
            {"TotalOK", each List.Sum([OK]), type number}
        }
    )

]

1722280417181.png


Comment les utiliser ? exemples
PowerQuery:
let
    FLD_GROUP_BY_DOMAINE = QRY_RECORD_PROPERTIES[FLD_GROUP_BY_DOMAINE]
in
    FLD_GROUP_BY_DOMAINE
   
   
let
    FLD_GROUP_BY_DOMAINE = QRY_RECORD_PROPERTIES[FLD_RECORD]
in
    FLD_GROUP_BY_DOMAINE
 

Pièces jointes

Dernière édition:
Bonjour, une petite variante qui permet de gérer les noms des colonnes à afficher dynamiquement via un RECORD, on fait toujours appel à Expression.Evaluate qu'il faut absolument maîtriser de la même manière que le INDIRECT sous Excel

PowerQuery:
let
    STR_Domaine="DOMAINE",
    STR_Appli="APPLI",
    STR_Ok="OK",
    STR_SourceColumns="TBL_SRC_DATA_Traitements [[" & STR_Domaine & "], [" & STR_Appli & "],[" & STR_Ok & "]]",
    TBL_EVAL_STR_SourceColumns=Expression.Evaluate(STR_SourceColumns,[TBL_SRC_DATA_Traitements=TBL_SRC_DATA_Traitements])
in
    TBL_EVAL_STR_SourceColumns
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour