Compter des cellules selon des conditions est une compétence simple en apparence, mais qui devient vite cruciale dès qu’on travaille sur des tableaux réels : ventes, listes clients, dates d’échéance, ou inventaires. Les fonctions NB.SI et NB.SI.ENS offrent une réponse directe : la première pour un critère, la seconde pour plusieurs. Ici je vous explique leur syntaxe, leurs cas d’usage concrets, les pièges courants — et je vous donne des formules à copier-coller pour gagner du temps.
Somaire
En bref
🧭 NB.SI compte les cellules d’une plage qui satisfont un seul critère (ex. « >100 », « Jean », « 2025-01-01 »). Utile pour des vérifications rapides et des tableaux simples.
🔗 NB.SI.ENS accepte plusieurs plages/critères et exige que toutes les plages aient la même taille : idéal pour croiser statut + région + période.
⚠️ Attention aux formats : dates, nombres stockés en texte et espaces cachés provoquent souvent des erreurs. Quelques corrections simples suffisent.
💡 En alternative, SUMPRODUCT et les tableaux dynamiques permettent des comptages plus sophistiqués quand NB.SI.ENS atteint ses limites.
Différence fondamentale et syntaxe
NB.SI : un critère, une plage
NB.SI (COUNTIF en anglais) répond à cette question : « combien de cellules dans cette plage correspondent à ce critère ? » Sa syntaxe est simple : =NB.SI(plage; critère). Le critère peut être un texte exact (« Rouge »), un opérateur logique combiné à un nombre (« >=100 »), ou contenir des jokers (* et ?) pour des correspondances partielles.
NB.SI.ENS : plusieurs critères
NB.SI.ENS (COUNTIFS) étend le principe à plusieurs paires plage/critère : =NB.SI.ENS(plage_critère1; critère1; plage_critère2; critère2; …). Chaque plage doit avoir le même nombre de lignes/colonnes. La fonction retourne le nombre de lignes où tous les critères sont simultanément vrais.
Tableau récapitulatif
Fonction | Usage | Exemple | Remarque pratique |
---|---|---|---|
NB.SI | 1 critère sur 1 plage | =NB.SI(B2:B100; « Vendu ») | Plus rapide pour une vérif ponctuelle |
NB.SI.ENS | Plusieurs critères sur plages indépendantes | =NB.SI.ENS(B2:B100; « Vendu »; C2:C100; « France ») | Plages must être de même taille |
SUMPRODUCT | Alternative pour logique arbitraire | =SOMMEPROD((B2:B100= »Vendu »)*(C2:C100= »France »)) | Plus flexible, mais parfois plus lent |
Exemples concrets et variantes utiles
1) Compter avec des jokers (recherche partielle)
Si vous voulez compter des clients dont le nom commence par « Dup », utilisez :
=NB.SI(A2:A500; « Dup* »)
Le joker * remplace n’importe quelle suite de caractères ; ? remplace un caractère. NB.SI ne tient pas compte de la casse : « dupont » et « Dupont » seront comptés de la même façon.
2) Critères numériques et dates
Pour compter les montants supérieurs à 1000 :
=NB.SI(D2:D1000; « >1000 »)
Pour une date après le 1er janvier 2024 :
=NB.SI(E2:E100; « >2024-01-01 »)
Si Excel n’interprète pas correctement la date, encapsulez-la dans la fonction DATE ou utilisez une cellule de référence :
=NB.SI(E2:E100; « > » & F1)
où F1 contient la date.
3) Plusieurs critères : exemple commercial
Nombre de commandes validées en France pour le commercial « Martin » :
=NB.SI.ENS(StatusRange; « Validée »; CountryRange; « France »; SalesRepRange; « Martin »)
Veillez à ce que StatusRange, CountryRange et SalesRepRange couvrent exactement les mêmes lignes (ex. B2:B500, C2:C500, D2:D500).

4) Cas avancé : combiner texte partiel et chiffres
Vous cherchez les lignes où le produit contient « USB » et la quantité est supérieure à 10 :
=NB.SI.ENS(ProductRange; « *USB* »; QuantityRange; « >10 »)
La première condition utilise un joker, la seconde un opérateur numérique. Cette combinaison est souvent utilisée pour filtrer des ventes par type de produit et seuil de quantité.
Pièges fréquents et corrections
- Format incorrect : les dates et chiffres stockés en texte ne sont pas comptés correctement. Solution : utiliser VALEUR, DATEVALUE, ou forcer le format par collage spécial.
- Espaces invisibles : un espace final empêche la correspondance exacte. Nettoyez avec SUPPRESPACE() ou RECHERCHE/REMPLACE.
- Tailles de plage différentes : NB.SI.ENS renverra une erreur si les plages n’ont pas la même dimension.
- Critères dynamiques : concaténez le critère avec & (esperluette) pour comparer à une cellule :
=NB.SI(A2:A100; « > » & G1)
- Performance : de très grandes plages avec beaucoup de critères peuvent ralentir; SOMMEPROD peut être plus lent encore selon le contexte.
Alternatives et astuces avancées
SUMPRODUCT (SOMMEPROD) permet de construire des logiques arbitraires, par exemple des OR complexes ou des pondérations. Pour compter des lignes où au moins une des conditions est vraie, on ne peut pas utiliser NB.SI.ENS directement ; on peut combiner NB.SI ou utiliser SOMMEPROD :
=SOMMEPROD(((A2:A100= »X ») + (B2:B100= »Y »))>0)
Cette formule additionne des conditions booléennes et renvoie 1 si au moins une est vraie. C’est plus verbeux, mais très puissant pour des analyses ponctuelles.
Astuce pratique : après l’import de données
Après avoir importé un tableau — par exemple un fichier CSV — vérifiez immédiatement :
- les formats colonne par colonne (texte vs nombre vs date),
- les cellules vides ou doubles en fin de plage,
- les séparateurs décimaux qui changent selon la région (virgule vs point).
Ces vérifications évitent la plupart des faux négatifs lors de l’utilisation de NB.SI et NB.SI.ENS. Une fois les formats standardisés, vos formules deviennent robustes et réutilisables.
Exemples prêt-à-copier
- Compter les produits retournés :
=NB.SI(StatusRange; « Retourné »)
- Clients VIP en 2024 :
=NB.SI.ENS(ClientTypeRange; « VIP »; OrderDateRange; « >=2024-01-01 »)
- Ventes Franco + montant > 5000 :
=NB.SI.ENS(CountryRange; « France »; AmountRange; « >5000 »)
FAQ
Pourquoi NB.SI.ENS retourne #VALEUR! ?
La cause la plus fréquente est que les plages n’ont pas la même taille. Vérifiez que chaque plage commence et finit sur les mêmes lignes/colonnes. Autre source : un critère mal formé (ex. « = » seul) ou un type incompatible (date en texte).
Comment traiter les majuscules/minuscules ?
NB.SI et NB.SI.ENS sont insensibles à la casse. Si vous avez besoin d’une comparaison sensible à la casse, il faut recourir à des formules matricielles ou à SOMMEPROD en combinant EXACT() avec N().
Peut-on utiliser des expressions régulières ?
Excel natif ne propose pas d’expressions régulières dans NB.SI. Pour des motifs complexes, utilisez Power Query ou VBA, ou des fonctions avancées dans Office 365 (LET, FILTER) couplées à une logique conditionnelle.
Comment déboguer un comptage qui semble erroné ?
Procédez par étapes : vérifiez la plage visible (tri/filtre), nettoyez espaces et formats, testez un critère simple puis ajoutez-en progressivement. Utilisez la mise en forme conditionnelle pour visualiser ce qu’Excel considère comme vrai.
Cet article est vraiment utile ! J’aime beaucoup les exemples pratiques qui aident à comprendre comment utiliser ces fonctions. Merci pour ces conseils !