Qu'est-ce que la fonction BDNBVAL ?
BDNBVAL (DCOUNTA en anglais) te sert dès que tu dois compter des enregistrements remplis sur un sous-ensemble filtré de ta base, sans extraire ces lignes à part ni retaper une formule à chaque changement de critère.
C'est la réponse à des questions comme « Combien de clients de Paris ont renseigné leur email ? », « Combien d'employés IT ont une certification active ? » ou « Combien de tâches haute priorité ont un responsable assigné ? ». Elle travaille avec du texte, des dates et des nombres là où sa cousine BDNB se limite aux nombres.
Syntaxe
=BDNBVAL(base_de_données; champ; critères)Clique sur un argument pour aller à son explication.
Les en-têtes de la zone de critères doivent correspondre exactement (caractère pour caractère, y compris les espaces) aux en-têtes de la base de données. Une différence minime renvoie 0 sans message d'erreur.

Comprendre chaque paramètre de la fonction BDNBVAL
Les trois arguments arrivent toujours dans le même ordre : d'abord ta base entière (en-têtes compris), ensuite la colonne que tu veux compter, et enfin la zone où tu écris tes conditions. Aucun n'est facultatif. Le champ se désigne par son nom entre guillemets comme "Email" ou par son numéro de colonne, mais le nom reste plus sûr si tu réorganises ta base plus tard.
base_de_données
: la plage complète de ta base de données, incluant obligatoirement la ligne d'en-têtesPar exemple, si tes données occupent les lignes 1 à 100 avec les en-têtes en ligne 1, tu indiques A1:F100.
Les en-têtes sont essentiels : c'est à travers eux qu'Excel fait le lien entre ta base et ta zone de critères.
champ
: la colonne sur laquelle tu veux compter les cellules non videsTu peux l'indiquer de deux façons : par son nom entre guillemets comme "Email", ou par sa position numérique dans la base (1 pour la première colonne, 2 pour la deuxième, etc.).
L'utilisation du nom est plus lisible et évite les erreurs si tu réorganises tes colonnes plus tard.
critères
: une zone séparée de ta base qui contient les conditions de filtrageLa première ligne doit reprendre exactement les en-têtes concernés, et les lignes suivantes contiennent les valeurs à filtrer.
Par exemple, pour filtrer les clients de Paris, crée une zone avec Ville en en-tête et Paris en dessous. Les critères sur la même ligne sont liés par ET (toutes les conditions doivent être vraies). Les critères sur des lignes différentes sont liés par OU (une seule condition suffit). Tu peux aussi utiliser des caractères génériques : * remplace n'importe quelle séquence de caractères, ? remplace un seul caractère.
Attention : Laisse toujours au moins une ligne vide entre ta base de données et ta zone de critères. Si elles sont adjacentes, Excel peut confondre les deux et produire des résultats incorrects.

Exemples pratiques pas à pas
Comment compter le nombre de cellules renseignées selon un critère avec la fonction BDNBVAL
Le plan de formation se boucle cette semaine et on te demande combien de personnes de l'IT sont déjà certifiées. Tes quatorze collaborateurs sont listés avec leur département et l'intitulé de leur certification, laissé vide pour celles et ceux qui n'en ont aucune. La fonction BDNBVAL lit une zone de critères posée à côté du tableau et compte d'un coup les cases réellement remplies sur les lignes qui y correspondent.
- 1Dans une cellule, écris
=BDNBVAL(. - 2En 1er argument : sélectionne le tableau entier avec sa ligne d'en-têtes,
A1:C15. Les titresEmployé,DépartementetCertificationfont partie de la sélection, et ce n'est pas une maladresse. C'est par eux que la fonction reconnaît quelle colonne porte quel nom, donc une sélection qui démarrerait en ligne 2 la laisserait sans repère. - 3En 2ᵉ argument : écris le nom de la colonne à compter,
"Certification". Il tient entre guillemets et reprend le titre de la colonne C à l'identique. Tu pourrais aussi désigner cette colonne par son rang dans le tableau en saisissant3, mais le nom reste lisible même si l'ordre des colonnes change un jour. - 4En 3ᵉ argument : sélectionne la zone où tu as écrit ta condition,
E1:E2. Ces deux cellules se préparent avant la formule, à l'écart du tableau. Tu recopies l'en-têteDépartementen E1, puis tu écrisITjuste en dessous. Cet en-tête doit être identique caractère pour caractère à celui du tableau, sinon la fonction renvoie0sans le moindre message. - 5Ferme la parenthèse et appuie sur Entrée.
=BDNBVAL(A1:C15; "Certification"; E1:E2)IT, puis compte celles dont la case Certification contient quelque chose : six, parce qu'Emma Roux est la seule de l'IT à avoir laissé la sienne vide. Remplace IT par Ventes en E2 et le compte se refait tout seul, sans que tu rouvres la formule.Comment croiser deux critères en ET avec la fonction BDNBVAL
La médecine du travail réclame son point de conformité pour le site de Lyon, et une visite oubliée sur un contrat permanent se paie cher au moindre contrôle. Ton tableau liste chaque collaborateur avec son site, son type de contrat et la date de sa dernière visite, laissée vide tant que le rendez-vous n'a pas eu lieu. La fonction BDNBVAL vérifie les deux conditions en même temps, à condition de les poser côte à côte dans la zone de critères.
- 1Dans une cellule, écris
=BDNBVAL(. - 2En 1er argument : sélectionne le tableau complet des collaborateurs, ligne d'en-têtes comprise,
A1:D8. Les quatre titresCollaborateur,Site,ContratetVisite médicaleforment le vocabulaire que les deux arguments suivants réutilisent. Aucun d'eux ne doit rester en dehors de la sélection. - 3En 2ᵉ argument : écris le nom de la colonne à compter,
"Visite médicale". L'espace et l'accent en font partie autant que les lettres, donc le nom doit reproduire l'en-tête de la colonne D tel quel. Cette colonne n'est ni celle du site ni celle du contrat, et compter ailleurs que là où l'on filtre est le cas le plus courant. - 4En 3ᵉ argument : sélectionne la zone des deux conditions,
F1:G2. Elle se construit à droite du tableau, en dehors des colonnes de la base. Tu recopiesSiteen F1 etContraten G1, puis tu écrisLyonen F2 etCDIen G2. Les deux conditions sont posées sur une même ligne, et une ligne du tableau n'est retenue que si elle satisfait les deux à la fois. - 5Ferme la parenthèse et appuie sur Entrée.
=BDNBVAL(A1:D8; "Visite médicale"; F1:G2)Lyon et en CDI, mais la fonction n'en compte que trois, puisque la case de Sophie Bernard est vide. Les dates saisies sont de vraies dates, et elles se comptent exactement comme du texte.Comment poser un opérateur de comparaison en critère avec la fonction BDNBVAL
Le service client veut savoir si les grosses commandes font davantage réagir les acheteurs que les petites, avant d'arbitrer une campagne de relance. Ton export liste chaque commande avec son montant et le commentaire laissé après réception, souvent absent, et tu veux compter les retours écrits au-dessus de 500 €. La fonction BDNBVAL accepte une condition chiffrée dans la zone de critères, donc le seuil se déplace en une frappe.
- 1Dans une cellule, écris
=BDNBVAL(. - 2En 1er argument : sélectionne le tableau des commandes avec sa ligne d'en-têtes,
A1:C8. La sélection s'arrête à la colonne C, et la zone de critères reste à l'écart en colonne E. Les deux blocs ne doivent pas se toucher, sans quoi Excel risque de les confondre. - 3En 2ᵉ argument : écris le nom de la colonne à compter,
"Commentaire". La fonction ne lit pas ce qui est écrit dans cette colonne. Elle regarde seulement si la case contient quelque chose ou non. - 4En 3ᵉ argument : sélectionne la zone qui porte le seuil,
E1:E2. Tu recopies l'en-têteMontanten E1, puis tu écris la condition>=500en E2 au lieu d'un montant exact. Viser un autre seuil revient alors à réécrire E2, sans jamais rouvrir la formule. - 5Ferme la parenthèse et appuie sur Entrée.
=BDNBVAL(A1:C8; "Commentaire"; E1:E2)>=500 écrite sous l'en-tête Montant retient les cinq commandes au-dessus du seuil, et la fonction compte celles dont le commentaire est rempli, soit quatre (la commande CMD-1043 est la seule à n'avoir rien laissé). Le montant ne sert qu'à filtrer, il n'entre jamais dans le compte.
Les erreurs fréquentes avec la fonction BDNBVAL
Avec BDNBVAL, les ennuis viennent presque toujours de la communication entre ta base et ta zone de critères. Un 0 silencieux signale un en-tête de critère qui ne colle pas caractère pour caractère, un #VALEUR! trahit une plage de base qui oublie la ligne d'en-têtes, et un comptage gonflé révèle des espaces invisibles qu'Excel prend pour du contenu.
La formule retourne 0 alors que des données correspondent
L'erreur la plus courante avec les fonctions BD : les en-têtes de la zone de critères ne correspondent pas exactement à ceux de la base. Même un espace invisible, une majuscule ou un accent différent empêche Excel de trouver la correspondance.
Solution : Copie-colle les en-têtes depuis la base vers la zone de critères au lieu de les retaper. Tu peux aussi utiliser une formule =A1 dans ton en-tête de critères pour garantir une correspondance parfaite.
BDNBVAL compte des cellules qui semblent vides à l'écran
BDNBVAL compte comme non vide une cellule qui contient des espaces invisibles, souvent créés lors d'imports de données. Elle est donc plus élevée que ce que tu attends visuellement.
Solution : Nettoie tes données avec SUPPRESPACE() avant d'appliquer BDNBVAL. Crée une colonne auxiliaire avec =SUPPRESPACE(A2) et utilise cette version nettoyée dans ta base.
Erreur #VALEUR! ou résultats incorrects
La plage base_de_données ne comprend pas la ligne d'en-têtes. Si tu indiques A2:C100 au lieu de A1:C100, Excel ne peut pas identifier les colonnes et ne sait pas à quoi correspondent tes critères.
Solution : Assure-toi que ta plage de base commence toujours à la ligne des en-têtes. Les en-têtes sont obligatoires pour toutes les fonctions BD : =BDNBVAL(A1:C100; "Champ"; E1:E2) et non =BDNBVAL(A2:C100; ...).

BDNBVAL vs NBVAL vs NB.SI vs BDNB
Utilise BDNBVAL quand tu as des critères multiples sur plusieurs colonnes d'une base structurée. Pour des comptages simples sans filtre, NBVAL ou NB.SI sont plus rapides à écrire. Si tu veux compter uniquement des nombres (et ignorer le texte), utilise BDNB.
| Critère | BDNBVAL | NBVAL | NB.SI | BDNB |
|---|---|---|---|---|
| Type de données compté | Tout (texte + nombres) | Tout (texte + nombres) | Tout (texte + nombres) | Nombres uniquement |
| Critères multiples (ET / OU) | Oui, zone séparée | Non | Un seul critère | Oui, zone séparée |
| Critères sur colonnes différentes | Oui | Non | Non | Oui |
| Zone de critères séparée | Obligatoire | Non applicable | Non applicable | Obligatoire |
| Cas d'usage idéal | Comptage complexe, filtre multi-colonnes | Comptage simple d'une plage | Comptage avec 1 critère | Comptage de nombres avec filtres |
Questions fréquentes
BDNB compte uniquement les cellules contenant des nombres dans le champ spécifié. BDNBVAL compte toutes les cellules non vides, qu'elles contiennent des nombres, du texte, des dates ou des booléens. Utilise BDNBVAL quand tu veux compter tous les enregistrements ayant une valeur dans un champ donné, quelle que soit la nature de cette valeur.
Non, BDNBVAL ignore complètement les cellules vides. Elle ne compte que les cellules contenant une valeur, quelle qu'elle soit.
Attention : une cellule contenant uniquement des espaces n'est pas considérée comme vide par Excel. Si tu as importé des données qui contiennent des espaces invisibles, BDNBVAL les comptera. Nettoie tes données avec SUPPRESPACE() pour éviter ce piège.
Place tes critères sur la même ligne dans la zone de critères pour un ET logique (ex : Age>30 ET Ville=Paris). Pour un OU logique, utilise plusieurs lignes (ex : Ville=Paris sur une ligne, Ville=Lyon sur la ligne suivante).
Tu peux aussi utiliser des caractères génériques : * remplace n'importe quel nombre de caractères (Par* trouve Paris, Parme, etc.), ? remplace un seul caractère (Par?s trouve Paris).
Vérifie que ta zone de critères est correctement formatée avec des en-têtes qui correspondent exactement aux en-têtes de ta base de données. Une différence même minime (espace invisible, majuscule) empêche la fonction de trouver les correspondances. Vérifie aussi que ta plage de base inclut bien les en-têtes (commence à la ligne 1 si tes en-têtes sont en ligne 1).
Oui, mais assure-toi d'abord de nettoyer tes données. Utilise SUPPRESPACE() pour éliminer les espaces indésirables et vérifie que tes en-têtes sont cohérents. Les données importées contiennent souvent des caractères invisibles qui peuvent perturber les fonctions de base de données.
Un bon réflexe : copy-paste les en-têtes de ta base directement dans ta zone de critères plutôt que de les retaper.
La meilleure vérification : applique un filtre manuel sur ta base avec les mêmes critères. Le nombre de lignes visibles non vides dans le champ doit correspondre au résultat de BDNBVAL.
Tu peux aussi utiliser NB.SI.ENS comme alternative sans zone de critères séparée pour comparer les résultats : si les deux donnent la même valeur, ta formule BDNBVAL est correcte.
Pour aller plus loin
Continue sur ta lancée après la fonction BDNBVAL : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



