Bonjour Jérôme,
Le DAX n’est pas simple et on est assez loin de l’approche Excel. Ici les calculs ne se font pas ligne à ligne mais cellule par cellule. C’est-à-dire que chaque cellule (dans les lignes et colonnes ou au niveau du total) est évaluée individuellement.
Dans votre calcul, la première condition est systématiquement satisfaite au niveau du total. Il faut donc le même calcul que pour la première condition mais au niveau du total (71.63 % s’explique comme ça : (17084 – 11580 + 6733) / 17084).
Il faut manipuler le contexte avec la fonction CALCULATE pour arriver à obtenir le bon résultat.
Bonnes pratiques : il faut toujours faire des mesures de base (même de simples sommes).
Pour solutionner votre problème :
- Faire des mesures de base (les sommes de chaque colonne),
- Faire une mesure par type de taux (pour simplifier les calculs),
<pre class=”language-markup”>Taux Décroché 1 =
CALCULATE (
DIVIDE (
[_Reçus SVI] - [_Reçus] + [_Traités],
[_Reçus SVI]
),
Team_GT_Environnement[Tx à appliquer] = 2
)
Taux Décroché 2 =
CALCULATE (
DIVIDE (
[_Traités] + [_Reprise SVI] + [_Abandonnés],
[_Reçus]
),
Team_GT_Environnement[Tx à appliquer] = 1
)
- Puis une mesure finale qui checke sur le niveau sur lequel on se trouve :
<pre class=”language-markup”>Taux Décroché =
VAR Tx =
SELECTEDVALUE ( Team_GT_Environnement[Tx à appliquer] )
RETURN
SWITCH (
TRUE (),
Tx = 1, [Taux Décroché 1],
Tx = 2, [Taux Décroché 2],
DIVIDE (
CALCULATE (
[_Reçus SVI] - [_Reçus] + [_Traités],
Team_GT_Environnement[Tx à appliquer] = 2
)
+ CALCULATE (
[_Traités] + [_Reprise SVI] + [_Abandonnés],
Team_GT_Environnement[Tx à appliquer] = 1
),
CALCULATE (
[_Reçus SVI],
Team_GT_Environnement[Tx à appliquer] = 2
)
+ CALCULATE (
[_Reçus],
Team_GT_Environnement[Tx à appliquer] = 1
)
)
)
Pour bien comprendre le problème, vous pouvez faire le test de suivant : remplacez vos calculs par “Toto” et “Titi”, au niveau du total, vous aurez “Toto” à priori (celui mentionné dans le premier IF).
Bon courage pour la suite de votre projet.