
Vous souhaitez compter certaines lignes, additionner des valeurs sous conditions ou sélectionner des catégories selon leurs résultats ?
La fonction FILTER Power BI répond à ces besoins, mais elle demande quelques repères. D'abord, elle retourne une table, pas directement un total. Ensuite, elle travaille souvent avec d'autres fonctions DAX.
Cependant, tous les calculs conditionnels ne nécessitent pas FILTER. Dans certaines situations, un filtre simple dans CALCULATE suffit. Dans cet article, nous allons construire plusieurs exemples avec une petite table. Ainsi, vous pouvez vérifier chaque résultat vous-même.
FILTER appartient au langage DAX, qui permet notamment de créer des mesures dans Power BI. Son rôle consiste à parcourir une table et à tester une condition pour chaque ligne. Ensuite, elle retourne uniquement les lignes qui respectent cette condition. FILTER retourne donc une table, même lorsque celle-ci contient une seule ligne. Elle ne supprime aucune donnée de votre source. Prenons un exemple simple : vous souhaitez conserver uniquement les opérations dont le montant dépasse 150 euros.
FILTER sélectionne les lignes correspondantes. Ensuite, une autre fonction peut les compter ou additionner leurs montants. Cette distinction vous évitera une confusion fréquente : sélectionner des lignes et calculer un résultat représentant deux opérations différentes.
La syntaxe contient deux arguments :
FILTER(Table, Condition)
Le premier argument désigne la table à parcourir. Vous pouvez aussi fournir une expression DAX qui retourne une table.
Le deuxième argument définit la condition. Pour chaque ligne, cette conditionne retourne vrai ou faux. Ainsi, cette expression conserve les opérations supérieurs à 150 euros :
FILTER ( operations, operations [Montant] > 150)
Ici, FILTER examine la colonne Montant pour chaque ligne de opérations. On appelle ce fonctionnement un contexte de ligne : la formule considère successivement chaque ligne pendant son évaluation
Cependant, cette expression seule ne constitue pas une mesure complète. Une mesure doit fournir une valeur unique au visuel.
Nous allons donc associer FILTER à plusieurs fonctions pour obtenir des résultats exploitables.

Dans Power BI Desktop, utilisez Entrer des données pour créer cette table :
| ID | Categorie | Montant | Coût | Statut |
| 1 | A | 120 | 80 | Validé |
| 2 | A | 180 | 200 | Validé |
| 3 | B | 90 | 50 | En attente |
| 4 | B | 210 | 140 | Validé |
| 5 | C | 160 | 110 | Validé |
| 6 | C | 40 | 60 | En attente |
Nommez la table opérations. Ensuite, choisissez un type numérique pour Montant et Coût. Chaque ligne représente une opération indépendante. Les catégories servent simplement à regrouper les données.
Créez ensuite cette première mesure avec nouvelle mesure :
Montant total = Sum(Operations[Montant])
Sans filtre, vous devez obtenir 800. Avant de poursuivre, affichez cette mesure dans une carte. Ce premier contrôle vous permettra de repérer immédiatement une erreur de saisie.
Pour les exemples suivants, créez également des mesures. Les résultats annoncés supposent l'absence de filtres supplémentaires dans votre rapport.
Commençons par une question simple : combien d'opérations dépassent 150 euros ?
La fonction COUNTROWS compte les lignes d'une table. Elle peut donc exploiter directement le résultat de FILTER
Nombre operations importantes =
COUNTROWS(FILTER(Operations, Operations[Montant] > 150))
D'abord, FILTER conserve les opérations 2,4, et 5. Ensuite, COUNTROWS compte ces trois lignes. La mesure retourne donc 3. Pour comprendre une formule imbriquée, je conseille de commencer par la fonction intérieure. ICI, identifiez d'abord les lignes restantes.
Ensuite seulement, regardez ce que la fonction extérieure calcule.
Vous pouvez également combiner plusieurs conditions :
Nombre opérations importantes validées =
COUNTROWS(FILTER(Operations, Operations[Montant] > 150 && Operations[Statut] = "Validé"))
L'opérateur && signifie "et". Chaque ligne doit donc respecter les deux conditions. Avec notre exemple, le résultat reste 3, car les trois opérations concernées possèdent le statut "Validé". En revanche, l'opérateur || signifie " ou". Une ligne entre alors dans la sélection lorsqu'elle respecte au moins une condition.
Cet exemple rend le fonctionnement de FILTRER Power BI facile à observer. Cependant, CALCULATE peut aussi traiter ces conditions simples.

Passons maintenant à une question différente : quel écart total obtient-on sur les opérations dont le montant dépasse le coût ?
Nous allons calculer Montant - Coût, uniquement pour ces opérations,
Ecart positif total =
SUMX(Filter(operations, operations[Montant] > operations[Coût]),
opérations[Montant] - opérations[cout])
D'abord, FILTER conserve les opérations 1,3,4 et 5.
Ensuite, SUMX calcule la différence pour chaque ligne restante. Enfin, elle additionne ces différences. Power BI décrit précisément ce fonctionnement ligne par ligne pour SUMX
| Opération | Calcul | Écart |
| 1 | 120 - 80 | 40 |
| 3 | 90 - 50 | 40 |
| 4 | 210 - 140 | 70 |
| 5 | 160 - 110 | 50 |
| Total | 200 |

La mesure retourne donc 200.
Cet exemple montre une association utile : FILTER choisit les lignes, puis SUMX calcule une expression sur chacune.
En revanche, SUM additionne directement les valeurs d'une colonne. Elle ne remplace pas SUMX pour calculer cette différence ligne par ligne.
Néanmoins, cette comparaison entre deux colonnes n'impose pas systématiquement FILTER. CALCULATE accepte aussi certaines conditions utilisant plusieurs colonnes d'une même table.
La question revient souvent lorsqu'on découvre DAX. Pourtant, ces fonctions remplissent des rôles différents.
FILTER retourne une table contenant les lignes retenues. CALCULATE évalue une expression dans un contexte de filtre modifié.
Voici les principaux repères :
| Votre besoin | Approche à privilégier |
| Calculer un total avec une condition simple | CALCULATE avec un filtre direct |
| Compte une sélection de ligne | COUNTROWS, éventuellement avec FILTER |
| Calculer une expression sur certaines lignes | SUMX avec une table adaptée |
| Sélectionner des catégories selon une mesure | FILTER avec VALUES |
| Calculer un total sur cette sélection | CALCULATE avec FILTER |
Par exemple, calculons le montant des opérations portant le statut "Validé" :
Montant valide = Calculate([montant total], opérations[ statut] = "Validé")
Sans filtre supplémentaire, cette mesure retourne 670. Ici, ajouter FILTER compliquerait inutilement la formule. MICROSOFT recommande les filtres booléens directs lorsque votre besoin le permet, particulièrement avec les modèles en mode Import. Toutefois, vous devez comprendre le comportement du filtre.
Dans cette formule, CALCULATE remplace un éventuel filtre existant sur OPERATIONS[statut]. Les filtres sur les autres colonnes continuent de s'appliquer.
Supposons qu'un segment utilise directement la colonne Operations[Statut]. Vous souhaitez respecter la sélection du lecteur, tout en limitant le calcul aux opérations validées.
Ajoutez alors KEEPFILTERS :
Montant valide dans la sélection = Calculate ([Montant total], KEEPFILTERS (Operations [statut] = "Validé"))
KEEPFILTERS conserve l'intersection entre le filtre existant et votre condition.
Ainsi, une sélection "En attente" ne contient aucune opération compatible avec "Validé". Cette mesure retourne alors une valeur vide.
Cette différence explique pourquoi deux formules apparement similaires peuvent afficher des résultats différents
Voici un cas particulièrement utile pour comprendre la fonction FILTER Power BI
Nous souhaitons additionner les montants des catégories dont le total dépasse 250 euros.
Attention : nous évaluons ici le total de chaque catégorie dont le total dépasse 250 euros.
Notre table donne les résultats suivants :
| Catégorie | Montant total | Dépasse 250 ? |
| A | 300 | OUI |
| B | 300 | OUI |
| C | 200 | NON |
Montant catégories au dessus du seuil =
Calculate ([Montant total], FILTER (VALUES(Operations[catégorie]), [Montant total] > 250))
D'abord, VALUES retourne les catégories distinctes présentes dans le contexte actuel. Dans notre exemple sans filtre, elle fournit A, B et C.
Ensuite, FILTER teste [Montant total] pour chacune.
L'appel de cette mesure transforme automatiquement le contexte de ligne en contexte de filtre. Ainsi, chaque évaluation calcule le total correspondant à la catégorie examinée.
FILTER conserve donc A et B. Enfin, CALCULATE additionne leurs montants. Le résultat atteint 600.
Vous ne pouvez pas placer directement [Montant total ] > 250 comme filtre booléan de CALCULATE. Ces arguments n'acceptent pas directement une mesure.
L'association avec FILTER répond justement à cette limite. Microsoft présente cette approche pour sélectionner des éléments selon le résultat d'une mesure.
Nous souhaitons examiner des catégories, pas des opérations.
VALUES fournit donc la bonne liste de travail : une ligne par catégorie distincte dans le contexte actuel. Si vous parcourez directement Opérations, vous changez le niveau d'analyse. Votre formule examine alors les opérations individuelles.
Avant d'écrire FILTER, posez vous cette question : quels éléments dois je tester, un par un ?
Cette habitude aide à choisir entre une table complète et une liste de valeurs distinctes.
Ces fonctions concernent les filtres, mais leurs usages diffèrent.
| Fonction | Rôle principal |
| FILTER | Sélectionner des lignes selon une condition |
| ALL | Retourner des lignes ou valeurs sans certains filtres, ou modifier le contexte |
| REMOVEFILTERS | Supprimer les filtres des colonnes ou tables indiquées |
| KEEPFILTERS | Conserver l'intersection avec les filtres existants |
ALL peut fournir une table à FILTER. REMOVEFILTERS, en revanche, sert uniquement à supprimer des filtres : elle ne retourne pas de table exploitable ainsi.
Par exemple, vous souhaitez calculer le total sans tenir compte d'un filtre sur Operations[Categorie]
Montant toutes catégories = calculate([Montant total], REMOVEFILTERS(Operations[Categorie]))
Ici, FILTER n'apporte rien. Votre objectif consiste à retirer un filtre, pas à tester une condition.
Cependant, cette formule conserve les filtres sur les autres colonnes. Si vous sélectionnez aussi un statut, ce statut continue donc de limiter le résultat.
Dans un modèle comprenant une table de catégories distincte, ciblez la colonne qui porte réellement le filtre.
Avant d'écrire du DAX, demandez-vous aussi à quel moment vous souhaitez filtrer.
Power Query permet de conserver ou d'exclure des lignes pendant la préparation des données. Par exemple, vous pouvez retirer des lignes de test avant leur chargement dans votre modèle. Cette opération ne supprime pas les lignes du fichier source.
En revanche, une mesure DAX répond aux besoins de calcul du rapport. Choisissez donc Power Query pour préparer le périmètre des données. Utilisez ensuite les mesures pour analyser ces données selon vos besoins.
Pour laisser simplement le lecteur choisir une catégorie, commencez par un segment. Vous n'avez pas besoin d'écrire FILTER pour chaque interaction.
Vous débutez et souhaitez prendre vos repères avant d'approfondir DAX ?
Chez Scale Formations, nous proposons une formation Power BI gratuite au format PDF.
Vous pouvez la consulter à votre rythme, puis poursuivre votre apprentissage avec nos articles pratiques.
Confondre une table et une valeur
Une mesure ne peut pas afficher directement plusieurs lignes et colonnes. Associez donc votre sélection à une fonction adaptée, comme COUNTROWS ou SUMX.
Oublier de vérifier les résultats
Avant d'utiliser une formule sur un grand modèle, contrôlez quelques lignes manuellement. Dans notre exemple, vous connaissez les résultats attendus : 3 opérations, 200 d'écart positif et 600 pour les catégories retenues.
Ensuite, ajoutez un segment sur la catégorie. Observez les changements et vérifiez leur cohérence avec votre question initiale.
Vous souhaitez construire des rapports complets et mieux comprendre vos propres formules ?
Notre Formation Power BI Pilotage Pro associe apprentissage en ligne et accompagnement individuel.
Vous travaillez progressivement la préparation des données, la modélisation, les calculs DAX et la création de rapports.
De plus, les exercices et les cas pratiques vous permettent d'appliquer les notions. L'accompagnement individuel vous aide à poser vos questions et à comprendre vos erreurs. Vous pouvez ainsi relier les formules aux résultats attendus.
L'objectif consiste à développer votre autonomie dans Power BI, depuis vos données sources jusqu'à vos indicateurs. La formation vous prépare aussi à passer l'examen d'ENI RS7103.

