BDNB (DCOUNT en anglais) est une fonction qui compte les cellules contenant des valeurs numériques dans une base de données selon des critères que tu définis dans une zone séparée et visible. Contrairement à NB.SI qui limite à un seul critère simple, BDNB te permet de combiner plusieurs critères complexes avec des opérateurs ET et OU.
Cette fonction fait partie de la famille BD (Base de Données) d'Excel, conçue pour analyser des tableaux structurés avec en-têtes de colonnes. Si tu gères des listes de clients, des inventaires ou des données de vente, BDNB te permet de compter rapidement combien d'enregistrements correspondent à tes critères métier, même les plus complexes, sans toucher à la formule elle-même.
Syntaxe de la fonction BDNB
=BDNB(base_de_données; champ; critères)La zone critères doit obligatoirement contenir les en-têtes dans sa première ligne, avec les valeurs de filtrage dans les lignes suivantes. Les en-têtes doivent correspondre exactement (casse incluse) à ceux de base_de_données.
Comprendre chaque paramètre de la fonction BDNB
Les trois arguments se suivent toujours dans le même ordre et aucun n'est facultatif : d'abord la plage entière de ton tableau (en-têtes compris), puis la colonne où compter, enfin la zone de critères à part. C'est ce deuxième argument, le champ, qui t'offre le plus de souplesse : tu peux le désigner par son nom entre guillemets, par son numéro de colonne, ou par une référence de cellule.
base_de_données
: la plage complète de ton tableau de données, en-têtes inclusPar exemple A1:D100 si ton tableau commence en A1 avec les titres de colonnes et contient des données jusqu'à la ligne 100. Excel utilise la première ligne comme référence pour identifier les champs.
Sans les en-têtes dans cette plage, BDNB ne peut pas fonctionner correctement et renvoie des résultats incorrects ou une erreur #VALEUR!.
Astuce : Inclus toujours la première ligne d'en-têtes dans ta plage base_de_données. Si ton tableau commence en A1, commence ta plage par A1, pas A2.
champ
: la colonne dans laquelle BDNB va compter les valeurs numériquesTu peux l'indiquer de trois façons : le nom du champ entre guillemets comme "Montant", un numéro de colonne comme 3 (pour la 3e colonne de la base), ou une référence de cellule contenant le nom.
Le nom entre guillemets est le plus lisible et le plus fiable car il ne dépend pas de la position des colonnes dans le tableau.
critères
: une zone séparée de ton tableau (souvent en haut à droite ou en bas) qui contient les conditions de filtrageLa première ligne doit contenir les noms des champs exactement comme dans ta base, et les lignes suivantes contiennent les valeurs de filtre.
Les critères sur la même ligne s'appliquent avec un ET logique (toutes les conditions doivent être vraies). Les critères sur des lignes différentes s'appliquent avec un OU logique (au moins une ligne doit correspondre).
Astuce : Place ta zone de critères au-dessus de ton tableau principal ou sur le côté, et garde toujours une ligne vide entre ta base de données et tes critères pour éviter qu'Excel les mélange. Le plus sûr : copie-colle les en-têtes depuis ta base vers la zone critères pour éviter les erreurs de frappe.
Pas envie d'écrire la formule BDNB à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
RH : compter les employés dans une fourchette de salaire
Tu travailles aux ressources humaines et ton directeur te demande combien d'employés gagnent entre 2 500 € et 3 500 €. Tu as une base de données avec nom, département et salaire.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Nom | Département | Salaire | Critères | |
| 2 | Martin | Commercial | 3 200 | Salaire | |
| 3 | Dubois | IT | 2 800 | >2500 | |
| 4 | Bernard | RH | 2 600 | ||
| 5 | Thomas | IT | 4 000 | Salaire | |
| 6 | <3500 |
=BDNB(A1:C5;"Salaire";E1:E2)La fonction applique les deux bornes (>2500 et <3500) posées sous l'en-tête Salaire, qui se combinent en ET, puis compte les lignes numériques restantes : Martin (3 200), Dubois (2 800) et Bernard (2 600), soit 3. Thomas est écarté car son salaire de 4 000 dépasse la borne haute.
Commercial : compter les ventes d'une région
Tu es responsable commercial et tu dois présenter combien de ventes ont été réalisées dans la région Nord ce trimestre. Ta base contient vendeur, région et montant.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Vendeur | Région | Montant | Critères | |
| 2 | Alice | Nord | 1 500 | Région | |
| 3 | Bob | Nord | 2 300 | Nord | |
| 4 | Claire | Sud | 1 800 | ||
| 5 | David | Nord | 950 |
=BDNB(A1:C5;"Montant";E1:E2)Ici, la zone de critères (en-tête Région, valeur Nord) filtre les lignes du Nord, puis la fonction compte celles dont le montant est numérique : Alice, Bob et David, soit 3. Claire est exclue car elle est dans la région Sud.
Gestionnaire de stock : produits sous le seuil d'alerte
Tu es gestionnaire de stock et tu veux savoir combien de produits ont une quantité en stock inférieure au seuil d'alerte pour anticiper les commandes.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Produit | Stock | Seuil | Critères | |
| 2 | Widget A | 45 | 50 | Stock | |
| 3 | Widget B | 120 | 100 | <50 | |
| 4 | Widget C | 30 | 50 | ||
| 5 | Widget D | 80 | 100 |
=BDNB(A1:C5;"Stock";E1:E2)La fonction applique le critère <50 posé sous l'en-tête Stock et compte les produits sous ce seuil : Widget A (45) et Widget C (30), soit 2. Widget B (120) et Widget D (80) restent au-dessus. Tu peux ajuster le seuil dans la cellule de critères sans toucher à la formule.
Astuce de pro : Rends ton tableau de bord dynamique : place le seuil dans une cellule séparée et compose le critère avec "<"&G1. Ainsi, tu changes le seuil en un seul endroit et toutes tes formules BDNB se mettent à jour.
Analyste : transactions multicritères d'un client
Tu es analyste de données et on te demande de compter combien de transactions le client ABC a effectuées en janvier avec un montant supérieur à 500 €. Trois critères simultanés : Client, Mois et Montant.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Client | Mois | Montant | Critères | |
| 2 | ABC | Janvier | 750 | Client | |
| 3 | XYZ | Janvier | 450 | ABC | |
| 4 | ABC | Janvier | 1 200 | ||
| 5 | ABC | Février | 800 |
=BDNB(A1:C5;"Montant";E1:G2)La formule combine trois critères placés sur la même ligne de la zone (ABC, Janvier, >500), qui s'appliquent en ET : seules les lignes vérifiant les trois conditions sont comptées. La ligne 1 (750) et la ligne 3 (1 200) passent, soit 2. La ligne 2 est exclue (mauvais client) et la ligne 4 aussi (mauvais mois). C'est la force de BDNB : combiner facilement 3 critères ou plus.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction BDNB
Avec BDNB, les ennuis viennent presque toujours de deux endroits : la zone de critères qui ne dialogue pas avec ta base, ou la nature des données comptées. Un en-tête de critère qui diffère d'un espace ou d'un accent renvoie 0, un nombre stocké en texte passe inaperçu, et oublier la ligne d'en-têtes dans la plage déclenche un #VALEUR!.
Le dernier piège est plus sournois : ranger tes conditions sur une même ligne ou sur des lignes séparées change tout, puisque l'une signifie ET et l'autre OU.
BDNB retourne 0 alors que des données correspondent
Les noms de champs dans la zone critères ne correspondent pas exactement aux en-têtes de la base de données. Un espace invisible, une majuscule différente ou un accent manquant suffit à faire rater la correspondance.
Solution : Copie-colle directement les en-têtes depuis ta base vers la zone critères plutôt que de les retaper. C'est le moyen le plus sûr d'éviter les erreurs de casse, d'espace ou d'accent.
BDNB ne compte pas des valeurs qui existent pourtant
BDNB ne compte que les valeurs numériques dans le champ spécifié. Si ton champ contient des nombres stockés en format texte (triangle vert dans le coin de la cellule), BDNB les ignore silencieusement.
Solution : Convertis tes nombres texte en vrais nombres : sélectionne la colonne, clique sur le triangle d'avertissement jaune et choisis "Convertir en nombre". Ou utilise BDNBVAL si tu veux compter toutes les cellules non vides, nombres et texte confondus.
Oublier les en-têtes dans la plage base_de_données
Si tu sélectionnes uniquement les données sans la ligne d'en-têtes dans le paramètre base_de_données, BDNB ne peut pas identifier les colonnes et renvoie une erreur #VALEUR! ou des résultats incohérents.
Solution : Commence toujours ta plage base_de_données depuis la ligne d'en-têtes. Si ton tableau commence en A1, ta plage doit commencer par A1, jamais A2.
Confusion entre ET et OU dans la zone critères
Les critères sur la même ligne s'appliquent avec un ET logique. Les critères sur des lignes différentes s'appliquent avec un OU. Mettre deux valeurs sur la même ligne quand tu voulais un OU, ou les séparer sur deux lignes quand tu voulais un ET, donne un résultat incorrect.
Solution : Pour un ET (les deux conditions doivent être vraies), mets tout sur la même ligne. Pour un OU (l'une ou l'autre condition est suffisante), utilise plusieurs lignes dans la zone critères.
BDNB vs NB.SI vs NB.SI.ENS vs NBVAL
BDNB est unique dans sa capacité à gérer des critères OU avec une zone visible et modifiable. NB.SI.ENS est plus simple pour les critères ET uniquement. Utilise BDNB quand tu as besoin du OU logique ou d'une zone critères externe facilement modifiable.
| Critère | BDNB | NB.SI | NB.SI.ENS | NBVAL |
|---|---|---|---|---|
| Critères multiples | Illimités (ET et OU) | 1 seul | Jusqu'à 127 (ET uniquement) | Aucun |
| Opérateur OU | Oui (lignes distinctes dans les critères) | Non | Non | Non |
| Compte les textes | Non (nombres uniquement) | Oui (selon critère) | Oui (selon critères) | Oui (tout) |
| Critères visibles | Oui (zone séparée) | Non (dans la formule) | Non (dans la formule) | N/A |
| Facilité d'utilisation | Plus complexe à mettre en place | Très simple | Moyenne | Très simple |
| Cas d'usage idéal | Bases structurées avec critères OU ou critères interactifs | Un critère simple | Plusieurs critères ET | Compter les cellules non vides |
Astuces avancées avec BDNB
Rendre ta zone critères interactive avec des listes déroulantes
Place ta zone critères sur une ligne au-dessus du tableau ou sur une feuille dédiée, et ajoute des listes déroulantes (Données > Validation) sur les cellules de valeurs. Tes utilisateurs sélectionnent un critère dans la liste et =BDNB(base;champ;critères) se recalcule instantanément, sans que personne ne touche à la formule.
C'est le meilleur moyen de construire un tableau de bord interactif avec des filtres visibles.
Combiner ET et OU sur plusieurs colonnes
Pour compter les transactions de la région Nord OU Sud avec un montant supérieur à 1 000 € dans les deux cas, crée deux lignes dans ta zone critères : la ligne 2 contient Nord + >1000, la ligne 3 contient Sud + >1000. =BDNB(base;"Montant";critères) applique un ET sur chaque ligne et un OU entre les lignes.
Cette combinaison ET/OU est impossible avec NB.SI.ENS et fait toute la valeur de BDNB.
Questions fréquentes sur la fonction BDNB
Quelle différence entre BDNB et BDNBVAL ?
BDNB ne compte que les cellules contenant des nombres dans le champ spécifié. BDNBVAL compte toutes les cellules non vides (nombres ET texte). Si tu veux compter les clients ayant renseigné un commentaire (valeur texte), utilise BDNBVAL. Si tu veux compter les lignes avec un montant saisi (nombre), utilise BDNB.
Peut-on utiliser des caractères génériques dans les critères ?
Oui. Tu peux utiliser * (plusieurs caractères quelconques) et ? (un seul caractère) dans tes critères texte. Par exemple, Paris* dans la zone critères comptera tous les enregistrements commençant par Paris (Paris 1er, Paris 15e, etc.). Ces caractères génériques fonctionnent sur les champs texte, pas sur les champs numériques.
Pourquoi BDNB retourne 0 alors que j'ai des données ?
Vérifie que : 1) le champ spécifié contient bien des nombres (pas du texte), 2) les en-têtes de ta zone critères correspondent EXACTEMENT aux en-têtes de ta base de données (casse, espaces, accents), 3) la plage de la base inclut bien les en-têtes en première ligne.
Comment compter avec plusieurs critères sur la même colonne ?
Pour appliquer un ET (salaire > 2 000 ET salaire < 4 000), place les deux critères sur la même ligne dans deux colonnes avec le même en-tête Salaire. Pour appliquer un OU (salaire > 5 000 OU salaire < 1 000), place chaque critère sur une ligne séparée dans la zone critères.
BDNB est-elle plus performante que NB.SI.ENS ?
Sur de grandes bases de données (plus de 10 000 lignes), BDNB peut être légèrement plus rapide car elle utilise un mécanisme d'indexation interne. Mais pour la plupart des cas d'usage quotidiens, la différence est négligeable. Choisis NB.SI.ENS si tu n'as besoin que de critères ET et que tu veux une formule plus compacte.
Pour aller plus loin
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

