Fonction NB.SI Excel
NB.SI (COUNTIF en anglais) est la fonction de comptage conditionnel la plus utilisée d'Excel. Elle répond à une question simple mais indispensable : combien de cellules correspondent à mon critère ? Tu lui donnes une plage et une condition, elle te rend un nombre.
C'est elle qui compte les ventes d'une région précise, les employés d'un certain poste, les dépenses au-dessus d'un seuil, les produits qui contiennent un mot-clé ou les mesures hors tolérance. Avec les jokers * et ?, elle gère aussi les recherches partielles sans que tu aies besoin de connaître le libellé exact.
Syntaxe de la fonction NB.SI
La fonction NB.SI parcourt une plage de cellules et renvoie le nombre de celles qui correspondent au critère spécifié (texte exact, nombre, opérateur de comparaison ou joker).
=NB.SI(plage; critère)Comprendre chaque paramètre de la fonction NB.SI
plage
: la zone de cellules à analyserTu peux utiliser une colonne entière (A:A), une plage délimitée (A1:A100), ou une plage nommée. NB.SI ne peut analyser qu'une seule plage à la fois.
Pour compter selon plusieurs plages ou plusieurs critères simultanément, utilise NB.SI.ENS qui reprend la même logique mais avec des paires plage/critère additionnelles.
critère
: la condition que les cellules doivent satisfaire pour être comptéesTu peux utiliser du texte exact ("Paris"), un nombre (100), un opérateur de comparaison (">100", "<>0"), ou des jokers ("*formation*", "P??is").
Quelques formes courantes : "Paris" (égal au texte Paris, insensible à la casse), ">100" (supérieur à 100), "<>0" (différent de 0), "*sport*" (contient le mot sport n'importe où). Pour utiliser un opérateur avec une valeur stockée dans une cellule, concatène : ">"&B1.
Astuce : Le joker * remplace n'importe quelle suite de caractères : "P??is" trouve Paris et Paeis. Le ? remplace exactement un seul caractère. Ces jokers ne fonctionnent qu'avec du texte, pas avec des nombres.
Pas envie d'écrire la formule NB.SI à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Exemple 1 – Commercial : compter les ventes par région
Tu es responsable commercial et tu veux savoir combien de ventes ont été réalisées dans la région Nord pour ton rapport hebdomadaire. Plutôt que de trier et compter manuellement, NB.SI fait le travail en une formule.
La formule =NB.SI(B1:B5; "Nord") parcourt la colonne Région et compte les cellules qui contiennent exactement Nord. Résultat : 3. NB.SI est insensible à la casse : Nord, NORD et nord sont traités de la même façon. Pour rendre la formule dynamique, place le nom de la région dans une cellule et référence-la : =NB.SI(B:B; E1).
| A | B | C | |
|---|---|---|---|
| 1 | Vente | Région | Montant |
| 2 | #001 | Nord | 1 200 € |
| 3 | #002 | Sud | 850 € |
| 4 | #003 | Nord | 2 100 € |
| 5 | #004 | Est | 1 500 € |
| 6 | #005 | Nord | 900 € |
=NB.SI(B1:B5; "Nord")Exemple 2 – Contrôleur de gestion : compter les dépenses supérieures à un seuil
Tu dois identifier combien de dépenses dépassent 500 € pour un rapport d'audit. Les opérateurs de comparaison s'écrivent entre guillemets dans le critère, directement collés à la valeur seuil.
La formule =NB.SI(B1:B5; ">500") compte les 3 dépenses au-dessus du seuil (890, 1 200 et 650 €). Pour rendre le seuil modifiable sans toucher à la formule, stocke 500 dans une cellule (ex : D1) et utilise =NB.SI(B:B; ">"&D1). Tu changes le seuil en modifiant D1.
| A | B | |
|---|---|---|
| 1 | Dépense | Montant |
| 2 | Fournitures | 320 € |
| 3 | Logiciel | 890 € |
| 4 | Formation | 1 200 € |
| 5 | Transport | 150 € |
| 6 | Matériel | 650 € |
=NB.SI(B1:B5; ">500")Exemple 3 – RH : compter les postes d'un certain type avec un joker
Tu veux compter tous les postes contenant le mot Manager, quel que soit le libellé exact (Manager, Senior Manager, Product Manager, etc.). Le joker * remplace n'importe quelle suite de caractères avant ou après le mot recherché.
La formule =NB.SI(B1:B5; "*Manager*") trouve les 3 cellules contenant Manager n'importe où dans le texte. Sans les étoiles, "Manager" ne trouverait que les cellules contenant exactement ce mot, sans rien avant ni après.
| A | B | |
|---|---|---|
| 1 | Employé | Poste |
| 2 | Alice | Manager |
| 3 | Bob | Développeur |
| 4 | Claire | Senior Manager |
| 5 | David | Product Manager |
| 6 | Emma | Designer |
=NB.SI(B1:B5; "*Manager*")Exemple 4 – Qualité : compter les valeurs hors tolérance avec différent de
Tu dois compter les mesures qui ne correspondent pas à la valeur cible de 100. L'opérateur <> signifie « différent de » dans les critères de NB.SI.
La formule =NB.SI(B1:B5; "<>100") détecte les 2 mesures hors cible (98 et 102). Combine avec la fonction NB.SI.ENS pour affiner : par exemple, compter les mesures à la fois hors cible ET supérieures à un seuil critique.
| A | B | |
|---|---|---|
| 1 | Échantillon | Mesure |
| 2 | #1 | 100 |
| 3 | #2 | 98 |
| 4 | #3 | 100 |
| 5 | #4 | 102 |
| 6 | #5 | 100 |
=NB.SI(B1:B5; "<>100")Exemple 5 – Généraliste : critère dynamique avec référence de cellule
Tu veux rendre ta formule de comptage flexible en utilisant une cellule comme critère plutôt que de coder la valeur en dur dans la formule. Ainsi, une seule formule te permet de basculer entre différents critères en modifiant simplement D1.
La formule =NB.SI(B1:B4; D1) lit le critère directement depuis la cellule D1. Si tu changes D1 de Tech à Meuble, le comptage se met à jour instantanément. C'est la bonne pratique pour les tableaux de bord où l'utilisateur doit pouvoir changer les filtres.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Produit | Catégorie | Critère | Résultat | |
| 2 | iPhone | Tech | Tech | 3 | |
| 3 | Galaxy | Tech | |||
| 4 | Table | Meuble | |||
| 5 | MacBook | Tech |
=NB.SI(B1:B4; D1)Les erreurs fréquentes avec la fonction NB.SI
Opérateur de comparaison sans guillemets : la formule renvoie 0 ou une erreur
=NB.SI(A1:A10; >100) provoque une erreur de syntaxe car l'opérateur > n'est pas reconnu en dehors des guillemets.
Solution : Mets toujours l'opérateur entre guillemets : =NB.SI(A1:A10; ">100"). L'opérateur fait partie du texte du critère.
Critère dynamique mal concaténé : la formule cherche littéralement '>B1'
=NB.SI(A1:A10; ">B1") cherche le texte >B1 au lieu d'utiliser la valeur stockée dans la cellule B1. L'opérateur et la référence ne sont pas séparés.
Solution : Concatène l'opérateur (entre guillemets) avec la référence de cellule en dehors des guillemets : =NB.SI(A1:A10; ">"&B1). L'esperluette & fait la jonction entre les deux.
Comptage à zéro alors que des valeurs correspondent
Tes nombres sont stockés en format texte (souvent importés depuis un autre système). =NB.SI(A1:A10; 100) ne trouve pas les cellules qui contiennent 100 en texte, car pour Excel un nombre et un texte sont différents.
Solution : Utilise le critère en texte "100" pour compter les nombres stockés en texte, ou convertis tes données en vrais nombres via la colonne Données > Convertir. Pour vérifier, sélectionne une cellule et regarde si elle est alignée à gauche (texte) ou à droite (nombre).
NB.SI vs NB.SI.ENS vs NB vs NBVAL
Ces quatre fonctions comptent des cellules, mais avec des portées et des critères différents. NB.SI est le point de départ ; passe à NB.SI.ENS dès que tu as deux critères ou plus.
| Critère | NB.SI | NB.SI.ENS | NB | NBVAL |
|---|---|---|---|---|
| Nombre de critères | 1 | 1 à 127 | Aucun (compte les nombres) | Aucun (compte les non-vides) |
| Jokers (* ?) | Oui | Oui | Non | Non |
| Opérateurs (>, <, <>) | Oui | Oui | Non | Non |
| Cas d'usage | Compter avec 1 critère | Croiser 2+ critères | Compter les nombres purs | Compter les cellules remplies |
Astuces avancées avec NB.SI
Compter les doublons avant de dédupliquer
Pour savoir si une valeur apparaît plusieurs fois dans une liste, utilise NB.SI depuis l'intérieur d'une autre colonne : =NB.SI(A:A; A1) dans chaque ligne te donne le nombre d'occurrences de cette valeur dans toute la colonne. Si le résultat est supérieur à 1, c'est un doublon.
Filtre ensuite sur les cellules avec une valeur > 1 pour isoler tous les doublons avant de les nettoyer.
Calculer des fréquences avec NB.SI et le total
Pour connaître la part en pourcentage d'une valeur dans ta liste, divise NB.SI par le nombre total de lignes : =NB.SI(A:A; "Paris")/NBVAL(A:A). Tu obtiens la fréquence relative directement.
Formatte la cellule en pourcentage pour afficher 23% au lieu de 0,23.
Remplacer les plages non contiguës par NB.SI.ENS
NB.SI ne peut analyser qu'une seule plage. Pour compter dans deux colonnes distinctes avec le même critère, utilise deux NB.SI et additionne : =NB.SI(A:A; "OK")+NB.SI(C:C; "OK").
Dès que tu dois croiser deux critères sur la même ligne (région ET statut), passe directement à NB.SI.ENS.
Questions fréquentes sur la fonction NB.SI
Quelle est la différence entre NB.SI et NB.SI.ENS ?
NB.SI compte avec un seul critère. NB.SI.ENS permet plusieurs critères simultanés sur plusieurs plages : par exemple, compter les ventes supérieures à 1 000 € ET réalisées en janvier.
Utilise NB.SI.ENS dès que tu as 2 conditions ou plus à croiser. Sa syntaxe est similaire : =NB.SI.ENS(plage1; critère1; plage2; critère2...).
NB.SI est-elle sensible à la casse (majuscules et minuscules) ?
Non. NB.SI ne distingue pas les majuscules des minuscules : Paris, PARIS et paris sont comptés de la même façon. C'est un comportement par défaut d'Excel pour les comparaisons de texte.
Pour un comptage sensible à la casse, utilise une formule matricielle avec EXACT : =SOMMEPROD((EXACT(A1:A10; "PARIS"))*1) compte uniquement les cellules contenant exactement PARIS en majuscules.
Comment compter les cellules contenant un mot spécifique ?
Utilise les jokers : =NB.SI(A:A; "*mot*") compte toutes les cellules contenant mot n'importe où dans le texte. L'astérisque remplace n'importe quelle suite de caractères.
Si tu veux que le mot soit au début, utilise "mot*". Si tu veux qu'il soit à la fin, utilise "*mot". Le ? remplace exactement un seul caractère : "P??is" trouverait Paris, Paeis, Pabis, etc.
Comment compter les cellules vides avec NB.SI ?
Utilise =NB.SI(A1:A10; "") pour compter les cellules visuellement vides. Pour les cellules non vides, utilise =NB.SI(A1:A10; "<>") ou simplement =NBVAL(A1:A10).
Attention : NB.SI avec "" compte les cellules contenant une chaîne vide saisie délibérément, ce qui peut différer de NB.VIDE qui compte les cellules vraiment vides (sans aucun contenu).
Peut-on utiliser une référence de cellule comme critère ?
Oui. =NB.SI(A:A; B1) compte les cellules égales à la valeur de B1. Pour les opérateurs, concatène l'opérateur (entre guillemets) avec la référence : =NB.SI(A:A; ">"&B1) compte les valeurs supérieures à ce qui est en B1.
Cette syntaxe avec & est la plus courante pour les critères dynamiques liés à des seuils modifiables.
Les fonctions similaires à NB.SI
Deviens un pro d'Excel
Rejoins Le Dojo Club pour maîtriser toutes les fonctions Excel, avec des lives hebdomadaires et une communauté qui t'aide.
Essayer pendant 30 jours