Fonction SWITCH DAX pour les financiers : classer vos créances clients par ancienneté

La fonction SWITCH Dax est très utile sur Power BI, mais elle est souvent mal expliquée : les tutoriels vont trop vite dans la technique. Ici, on reprend tout depuis le début, argument par argument, pour que vous compreniez bien ce que fait SWITCH avant même de l’écrire, à travers un exemple simple pour un financier : classer des créances clients par tranche d’ancienneté.

C’est quoi la fonction SWITCH, en une phrase simple

Imaginez un videur à l’entrée d’une soirée. Il vérifie une liste de conditions, dans l’ordre : avez-vous une invitation ? Êtes-vous sur la liste VIP ? Avez-vous payé votre billet ? Dès qu’une réponse est « oui », il vous laisse entrer et arrête de vérifier le reste. SWITCH fait pareil avec vos données : il pose une série de questions « est-ce que c’est ça ? », dans l’ordre, et s’arrête dès qu’une réponse est « oui ».

Pourquoi et quand un financier a besoin de SWITCH

Dès qu’un financier a besoin de regrouper des données en catégories selon une règle, SWITCH devient utile : classer des comptes par nature (actif, passif, charge, produit), regrouper des montants en tranches (petit, moyen, gros client), construire des sous-totaux dynamiques dans un compte de résultat, ou encore — l’exemple qu’on va détailler ici — classer des créances clients selon leur retard de paiement pour prioriser les relances.

Sans SWITCH, il faudrait empiler des formules conditionnelles imbriquées (des IF les uns dans les autres), rapidement illisibles dès qu’on a plus de deux ou trois cas. SWITCH remplace cet empilement par une liste claire, cas par cas.

Comment ça marche, argument par argument

Une formule SWITCH se lit comme une conversation. Décomposons-la argument par argument, avant même de toucher à un cas comptable.

  • 1er argument — l’expression testée : c’est la question qu’on pose. Par exemple, écrire TRUE() revient à dire à SWITCH « je vais te poser plusieurs questions Vrai/Faux, une par une, et tu t’arrêtes à la première qui est vraie »
  • 2e argument — la 1ère condition : la première question posée, par exemple « est-ce que ce montant est inférieur à 30 ? »
  • 3e argument — le 1er résultat : ce que SWITCH renvoie si la réponse à la question précédente est « oui »
  • 4e et 5e arguments : la 2e question et son résultat associé, si la 1ère question a répondu « non »
  • Et ainsi de suite : vous pouvez ajouter autant de paires question/résultat que nécessaire
  • Dernier argument, seul (optionnel) : le résultat « par défaut », utilisé si aucune des questions précédentes n’a répondu « oui »

Point essentiel à retenir : SWITCH s’arrête à la première question à laquelle il répond « oui ». L’ordre dans lequel vous écrivez vos conditions compte énormément, comme on va le voir juste après.

Un échange gratuit pour évaluer vos besoins

Envie de savoir comment DAX et Power BI s’appliqueraient concrètement à votre reporting financier ? Parlons-en ensemble, sans engagement.

20 minutesSans engagement100% personnalisé
Réserver un call

Exemple concret : classer vos créances clients par ancienneté

Mettons-nous en situation. Vous avez une liste de factures clients impayées, avec pour chacune une colonne Jours_Retard qui indique depuis combien de jours la facture aurait dû être payée. Vous voulez classer chaque facture dans une tranche : « 0-30 jours », « 31-60 jours », « 61-90 jours », ou « +90 jours » — une balance âgée classique, utile pour prioriser vos relances.

Voici la mesure DAX qui fait ce travail :

Tranche_Anciennete = 
SWITCH(
    TRUE(),
    [Jours_Retard] <= 30, "0-30 jours",
    [Jours_Retard] <= 60, "31-60 jours",
    [Jours_Retard] <= 90, "61-90 jours",
    "+90 jours"
)

Reprenons argument par argument, sur ce cas précis :

  • TRUE() : on prévient SWITCH qu'on va lui poser des questions Vrai/Faux
  • [Jours_Retard] <= 30 puis "0-30 jours" : "est-ce que le retard est de 30 jours ou moins ? Si oui, réponds 0-30 jours"
  • [Jours_Retard] <= 60 puis "31-60 jours" : si la question précédente a répondu "non" (donc le retard dépasse déjà 30 jours), on demande "est-ce 60 jours ou moins ? Si oui, réponds 31-60 jours"
  • [Jours_Retard] <= 90 puis "61-90 jours" : même logique, un cran plus loin
  • "+90 jours" seul à la fin : le résultat par défaut, pour tout ce qui n'est rentré dans aucune des tranches précédentes

C'est pour ça que l'ordre est important ici : les tranches sont rangées de la plus petite à la plus grande. Si vous les aviez écrites dans le désordre, une facture en retard de 100 jours pourrait être classée à tort dans "0-30 jours" parce que SWITCH se serait arrêté trop tôt sur une condition mal placée.

Une fois cette mesure créée, il suffit de la glisser dans un visuel Power BI (un graphique en barres, par exemple) pour voir instantanément la répartition de vos impayés par tranche d'ancienneté, actualisée automatiquement à chaque nouvel export.

Les erreurs fréquentes de débutants

La première erreur est justement d'oublier l'ordre croissant des conditions quand on utilise SWITCH(TRUE(), ...) sur des tranches de valeurs : SWITCH s'arrête à la première condition vraie, donc un mauvais ordre donne des résultats faux sans qu'aucune erreur ne s'affiche. La seconde est d'oublier le dernier argument par défaut : sans lui, toute ligne qui ne correspond à aucune condition renvoie un vide (blank), ce qui peut fausser des totaux sans que vous vous en rendiez compte.

Se former à DAX pour les financiers

SWITCH n'est qu'une des nombreuses fonctions DAX utiles à un financier. Une fois maîtrisée, elle ouvre la porte à des constructions plus avancées, comme les sous-totaux dynamiques d'un compte de résultat.

💡 Pour aller plus loin : Quelles mesures DAX pour construire vos états financiers sur Power BI ?

Créer son reporting financier avec Power BI

Une formation pratique pour maîtriser DAX et Power Query de A à Z : retraitement des balances, mesures DAX fiables, P&L dynamique, bilan, TFT.

Cas pratiques réelsÀ ton rythmePour comptables & financiers
En savoir plus

Catégories