top of page
Rechercher

HASONEVALUE dans Power BI : détecter une valeur unique en DAX

Groupe Kronoscope
5 sept.
5 min de lecture

Votre matrice affiche des lignes justes, mais un total incohérent.


La fonction HASONEVALUE sert précisément à distinguer ces deux situations. Elle indique si une colonne est réduite à une seule valeur dans le contexte de filtre courant.


Voici sa syntaxe, son cas d’usage principal et l’option native apparue en 2026 qui peut parfois la remplacer.




HASONEVALUE en un exemple simple

Prenons trois vendeurs et deux régions. La région Nord revient deux fois.

Vendeur

Région

CA

Marie

Nord

100 €

Karim

Nord

150 €

Léa

Sud

200 €

Ajoutons cette mesure au modèle.

Une seule region ? = HASONEVALUE ( Ventes[Region] )

Plaçons les vendeurs en lignes d'un tableau. Vérifions le résultat ligne par ligne.

Ligne du visuel

Régions visibles

Une seule valeur ?

Marie

Nord

✓ VRAI

Karim

Nord

✓ VRAI

Léa

Sud

✓ VRAI

Total

Nord ET Sud

✗ FAUX

La ligne de total est la seule à renvoyer FAUX.

Tout l'intérêt de la fonction tient dans cette différence.



Syntaxe et fonctionnement de HASONEVALUE

Le paramètre attendu

Syntaxe

HASONEVALUE ( <NomDeColonne> )

Un seul argument. La fonction renvoie VRAI ou FAUX.

Le paramètre est une référence de colonne. Ce ne peut pas être une expression.

Écrivez le nom de la table, puis celui de la colonne entre crochets.


Ce que « une seule valeur » veut dire

La fonction examine le contexte de filtre en cours.

Elle renvoie VRAI si la colonne y est réduite à une valeur distincte.

Microsoft donne l'équivalent exact de cette écriture.

COUNTROWS ( VALUES ( <NomDeColonne> ) ) = 1

Le comptage porte sur les valeurs distinctes, pas sur les lignes.

Trois lignes portant Nord ne comptent donc que pour une seule valeur.



Corriger un total qui ne fait pas la somme des lignes

Pourquoi le total est faux

Reprenons nos trois vendeurs. Ajoutons une prime de 50 € au-delà de 150 € de ventes.

CA = SUM ( Ventes[Montant] )
Prime = IF ( [CA] >= 150 ; 50 ; 0 )

Vendeur

CA

Prime affichée

Marie

100 €

0 €

Karim

150 €

50 €

Léa

200 €

50 €

Total

450 €

50 €

Le résultat ligne à ligne est correct. La somme attendue vaut 100 €.

La ligne de total affiche pourtant 50 €. Power BI n'additionne pas les lignes affichées.

Il réévalue la mesure sans le filtre du vendeur.

Le CA total atteint 450 €, donc la prime vaut 50 €.

Le calcul est techniquement juste. Il est commercialement absurde.


Tableau Power BI montrant une prime correcte pour chaque vendeur et une ligne de total à 50 € au lieu de 100 €, puis la mesure corrigée avec HASONEVALUE.


La mesure corrigée avec HASONEVALUE

HASONEVALUE permet de traiter la ligne de total séparément.

Prime =

IF (

HASONEVALUE ( Ventes[Vendeur] ) ;

IF ( [CA] >= 150 ; 50 ; 0 ) ;

SUMX ( VALUES ( Ventes[Vendeur] ) ; IF ( [CA] >= 150 ; 50 ; 0 ) )

)

Vérifions de nouveau le comportement, ligne par ligne.


Vendeur

CA

Prime

Additionnée par SUMX ?

Marie

100 €

0 €

Karim

150 €

50 €

Léa

200 €

50 €

Total

450 €

100 €

Sur une ligne vendeur, le test renvoie VRAI. La règle métier s'applique normalement.

Sur la ligne de total, le test renvoie FAUX.

SUMX parcourt alors chaque vendeur et additionne les primes.


Bon à savoir

SUMX déclenche une transition de contexte sur chaque vendeur. C'est ce qui permet à la mesure CA de renvoyer le bon montant à chaque itération.



HASONEVALUE, SELECTEDVALUE ou ISINSCOPE

Trois fonctions se ressemblent. Elles ne répondent pas à la même question.

HASONEVALUE


Renvoie VRAI ou FAUX.

À utiliser pour savoir si l'on se trouve sur une ligne de détail ou sur un total.

SELECTEDVALUE


Renvoie la valeur elle-même, ou une valeur de repli. Microsoft la recommande pour lire une sélection.

ISINSCOPE


Renvoie VRAI si la colonne sert de regroupement dans le visuel. C'est le bon choix en matrice hiérarchique.

Le piège est le suivant. Un segment peut filtrer la colonne sur une seule valeur.

HASONEVALUE renvoie alors VRAI même sur la ligne de total. ISINSCOPE, lui, renvoie FAUX.


Pour un titre dynamique, préférez SELECTEDVALUE. Microsoft recommande cette fonction à la place de l'ancien couple IF, HASONEVALUE et VALUES.


Schéma comparant HASONEVALUE, SELECTEDVALUE, ISINSCOPE et les totaux personnalisés de Power BI, avec la question à laquelle chacun répond.




Totaux personnalisés : la nouveauté qui change la donne

Microsoft a introduit les totaux personnalisés en préversion en mars 2026.

Ils sont en disponibilité générale depuis mai 2026.

Faites un clic droit sur une colonne numérique d'un tableau ou d'une matrice.

Choisissez ensuite « Personnaliser le calcul total ». Sept options sont proposées.

Option

Ce que la ligne de total affiche

Somme

Somme des valeurs des lignes affichées

Moyenne

Moyenne des valeurs des lignes affichées

Min

Valeur minimale des lignes affichées

Max

Valeur maximale des lignes affichées

Comptage (Unique)

Nombre de valeurs uniques des lignes affichées

Nombre

Nombre de valeurs des lignes affichées

Aucun

Masque la valeur de la ligne de total

L'option Somme additionne les lignes affichées.

Elle règle le cas le plus fréquent sans écrire une ligne de DAX.


Ce que Power BI fait réellement

La fonctionnalité s'appuie sur les calculs visuels.

La colonne d'origine reçoit le suffixe _Base, puis elle est masquée.

Un calcul visuel la remplace, sous cette forme.

Colonne = EXPANDALL ( <agregation> ( [Colonne_Base] ) ; ROWS COLUMNS )

Un indicateur apparaît enfin dans la cellule de total concernée.


Quand garder HASONEVALUE

Les totaux personnalisés ne fonctionnent que sur les visuels tableau et matrice.

Ils ne s'appliquent qu'aux colonnes numériques.

La mise en forme du champ n'est pas non plus reprise.

Microsoft précise dans sa documentation sur la matrice que le comportement par défaut reste la traduction exacte de la mesure DAX.

Retenez la règle. Une simple somme des lignes affichées appelle un total personnalisé.

Une véritable règle métier appelle HASONEVALUE.



Les pièges de HASONEVALUE

Trois erreurs reviennent régulièrement chez les praticiens.

La première consiste à masquer le total avec BLANK au lieu de le recalculer.

Le lecteur perd alors une information, au lieu d'en gagner une.


HASONEVALUE n'est pas HASONEFILTER

HASONEVALUE tient compte des filtres croisés venus des tables liées.

HASONEFILTER ne regarde que le filtre direct posé sur la colonne.

Un filtre appliqué sur une table de dimension suffit donc à HASONEVALUE.

HASONEFILTER, dans la même situation, renverra FAUX.


La fonction est faite pour les mesures

Appelée dans un contexte de ligne, HASONEVALUE déclenche une transition de contexte.

Dans une colonne calculée, le contexte se réduit alors à la ligne courante.

Le test renvoie VRAI presque systématiquement. Réservez cette fonction aux mesures.



Ce qu'il faut retenir

  • HASONEVALUE renvoie VRAI quand la colonne testée est réduite à une seule valeur.

  • Son usage principal reste la correction d'un total incohérent.

  • Le recalcul du total passe par SUMX et VALUES, jamais par BLANK.

  • SELECTEDVALUE lit une sélection. ISINSCOPE repère un niveau de hiérarchie.

  • Depuis mai 2026, un total personnalisé règle les cas simples sans DAX.

Pour compter les valeurs uniques plutôt que les tester, lisez notre article sur DISTINCTCOUNT.

Pour comprendre comment une mesure modifie son contexte, lisez notre article sur CALCULATE.


Besoin d'aller plus vite ?

Nos formations Power BI en intra-entreprise sont animées par des formateurs qui développent aussi des rapports au quotidien. Parlons de votre projet.


 
 
bottom of page