RANKX et TOPN
RANKX classe, TOPN sélectionne. Le premier piège est célèbre : sans ALL, chaque produit n'est comparé qu'à lui-même et tout le monde finit premier. Le simulateur le montre.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
RANKX(table, expression, , ordre, ex aequo) calcule l'expression pour chaque ligne de la table, puis donne la position de la valeur courante. TOPN(n, table, expression) renvoie les n lignes de la table qui ont la plus grande valeur.
02Le simulateur
Compare RANKX avec ALL et sans ALL.
Rang = IF(ISINSCOPE(Produits[Produit]), RANKX(ALL(Produits[Produit]), [CA])) CA top 3 = CALCULATE([CA], TOPN(3, ALL(Produits[Produit]), [CA])) Rang dense = RANKX(ALL(Produits[Produit]), [CA], , DESC, DENSE)
03À toi de jouer
Le podium des clients
Classe les clients selon leur CA 2026, et crée une mesure qui affiche le CA des 3 meilleurs clients.
| Client | CA 2026 | Rang |
|---|---|---|
| Garage Martin | 12 277 € | 1 |
| Cabinet Roy | 11 590 € | 2 |
| Mairie de Lomme | 9 078 € | 3 |
| Café des Arts | 6 815 € | 4 |
| Librairie Page | 5 118 € | 5 |
| CA top 3 | 32 945 € |
Résultat attendu : 10 clients classés ; le total de la mesure CA top 3 vaut la somme des 3 premiers.
Le même classeur sert pour tous les défis : 408 ventes sur 2025 et 2026, avec les tables Produits, Clients et Dates. L'onglet Lisez-moi indique les relations à créer.
Solution : RANKX sur ALL(Clients[Client]) pour le rang ; TOPN comme filtre de CALCULATE pour le top 3.
Rang = IF(ISINSCOPE(Clients[Client]), RANKX(ALL(Clients[Client]), [CA])) CA top 3 = CALCULATE([CA], TOPN(3, ALL(Clients[Client]), [CA]))
04Pièges à éviter
Sans ALL, la table de comparaison est filtrée par la ligne du visuel : elle ne contient qu'un produit. RANKX(ALL(Produits[Produit]), …) compare à tous les produits.
Sur la ligne Total, RANKX renvoie 1, ce qui n'a aucun sens. ISINSCOPE(Produits[Produit]) permet de ne rien afficher quand la colonne n'est pas dans le niveau en cours.
05Questions fréquentes
Pourquoi RANKX renvoie 1 partout ?
RANKX(table, expression, , ordre, ex aequo) calcule l'expression pour chaque ligne de la table, puis donne la position de la valeur courante. TOPN(n, table, expression) renvoie les n lignes de la table qui ont la plus grande valeur.
Quel est le piège le plus fréquent avec RANKX ?
Le rang 1 partout. Sans ALL, la table de comparaison est filtrée par la ligne du visuel : elle ne contient qu'un produit. RANKX(ALL(Produits[Produit]), …) compare à tous les produits.
La fiche « RANKX et TOPN » est-elle gratuite ?
Oui. La fiche, son simulateur et son défi et sa version PDF sont en accès libre et gratuit, sans inscription. Elle fait partie du cours DAX gratuit de mesetudesdecas.fr, qui compte 32 fiches.
Passez de la fiche à la mise en situation
Les études de cas de mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise : modèle de données, mesures DAX et tableau de bord Power BI, avec énoncé, corrigé et pas-à-pas du formateur.
Voir le catalogueVoir aussi le cours Power Query gratuit
Fiche V1.0 | Dernière mise à jour : 02/11/2026 | Clément Delobel, formateur Power BI et DAX