POWERQUERY :: Evaluation par tranche dans une liste de sous-listes

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
pour faire suite à ce post https://excel-downloads.com/threads...un-element-dans-une-sous-liste-v2-0.20083542/
il est possible de faire une évaluation par tranche selon un barème.
Exemple de barème :
ListRank =
{
{(x)=>x=0, "Robuste"},
{(x)=> x<=5, "Fiable"},
{(x)=> x<=10, "Fragile"},
{(x)=> x<=15, "Peu fiable"},
{(x)=> x<=20, "Non fiable"},
{(x)=> x>20, "Inqualifiable"}
},

On imagine que l'on doive qualifier des applications dans une certification de données selon le nombre d'incidents enregistrés sur une période.
La liste présentée ci-dessus parle d'elle-même.
Cette liste est facilement transposable dans un barème tarifaire avec l'application d'une remise selon un volume d'achats et de renvoyer un pourcentage ou un coefficient qui sera appliqué sur un montant.
Ces données peuvent être issues d'un fichier texte, le but étant de l'importer dans la foulée de l'évaluer pour appliquer ce barème. Certes on peut faire cela sous Excel de multiples manières mais l'intérêt de cette solution c'est qu'elle présente ZERO formule Excel. Donc par exemple un gain de performances Excel si on importe un très gros fichier. Tout se passe dans PowerQuery avec en résultat un fichier Excel plus light dépourvu de formules.

La fonction fnEvaluateByRankInterval
PowerQuery:
let fnEvaluateByRankInterval =
    (
      pValue as any,
      pList as list
    ) as any =>
   
      let
        Result = List.First(List.Select(pList, (v) => v{0}(pValue))){1}
      in
        Result
in
  fnEvaluateByRankInterval

Exemple de requête :
PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="TB_INCIDENTS"]}[Content],  
    TypeModif = Table.TransformColumnTypes(Source,{{"NBR_INCIDENTS", Int64.Type}, {"APPLI", type text}}),
    ListRank =
          {
             {(x)=>x=0, "Robuste"}, 
              {(x)=> x<=5, "Fiable"}, 
              {(x)=> x<=10, "Fragile"}, 
              {(x)=> x<=15, "Peu fiable"}, 
              {(x)=> x<=20, "Non fiable"},
              {(x)=> x>20, "Inqualifiable"} 
          },
    EvalIncidents = Table.AddColumn(TypeModif, "EVALUATION", each fnEvaluateByRankInterval([NBR_INCIDENTS],ListRank))
in
    EvalIncidents

1720107291198.png


L'évaluation s'effectue ici :
PowerQuery:
EvalIncidents = Table.AddColumn(TypeModif, "EVALUATION", each fnEvaluateByRankInterval([NBR_INCIDENTS],ListRank))
 

Pièces jointes

Dernière édition:
- 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