BDNBVAL (DCOUNTA en anglais) compte les cellules non vides dans une base de données en appliquant des critères que tu définis dans une zone séparée. Contrairement à NBVAL qui compte toute une plage d'un coup, BDNBVAL filtre d'abord selon tes conditions, puis compte.
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 de la fonction BDNBVAL
=BDNBVAL(base_de_données; champ; critères)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.
Astuce : Utilise une plage dynamique ou un tableau Excel pour que la formule s'adapte automatiquement quand ta base s'agrandit.
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.
Astuce : Utilise le nom de colonne entre guillemets ("Email") plutôt que le numéro de position. Si tu réorganises tes colonnes, la formule reste juste sans modification.
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
RH : compter les employés IT ayant renseigné leur certification
Tu travailles aux ressources humaines et tu dois savoir combien d'employés du service IT ont renseigné une certification professionnelle. Ta base contient des certifications variées (texte) ainsi que des champs vides pour ceux qui n'en ont pas. Cette mesure t'aide à identifier rapidement les gaps de formation dans ton équipe.
| A | B | C | |
|---|---|---|---|
| 1 | Employé | Service | Certification |
| 2 | Marie Durand | IT | AWS Solutions Architect |
| 3 | Pierre Martin | IT | |
| 4 | Sophie Bernard | RH | SHRM-CP |
| 5 | Lucas Petit | IT | CCNA |
| 6 | Emma Robert | IT |
=BDNBVAL(A1:C6; "Certification"; E1:E2)La zone de critères (en-tête Service en E1, valeur IT en E2) isole d'abord les 4 lignes du service IT, puis la fonction compte celles dont la colonne Certification est non vide : 2 (Marie et Lucas).
Commercial : mesurer l'engagement des prospects d'un salon
Tu es commercial et tu veux savoir combien de prospects issus du Salon 2024 ont laissé un commentaire dans ton CRM. Un commentaire renseigné signale un niveau d'engagement plus fort, donc une priorité de relance plus haute.
| A | B | C | |
|---|---|---|---|
| 1 | Prospect | Source | Commentaire |
| 2 | Entreprise ABC | Salon 2024 | Intéressé par offre Premium |
| 3 | Société XYZ | Web | Demande devis urgent |
| 4 | Client Pro | Salon 2024 | |
| 5 | Startup Tech | Salon 2024 | Veut démo produit |
| 6 | Digital Corp | Web |
=BDNBVAL(A1:C6; "Commentaire"; E1:E2)Ici, la fonction retient d'abord les 3 prospects dont la Source vaut Salon 2024 (critère posé en E1-E2), puis compte ceux dont le champ Commentaire est renseigné : 2. En dupliquant la formule pour chaque source, tu compares l'engagement selon les canaux d'acquisition.
Chef de projet : vérifier les tâches haute priorité sans responsable
Tu es chef de projet et tu veux t'assurer que toutes les tâches critiques ont un responsable assigné. Tu veux compter combien de tâches haute priorité ont un nom dans la colonne Responsable.
| A | B | C | |
|---|---|---|---|
| 1 | Tâche | Priorité | Responsable |
| 2 | Design interface | Haute | Sophie |
| 3 | Tests unitaires | Moyenne | Marc |
| 4 | Déploiement prod | Haute | |
| 5 | Documentation | Haute | Julie |
| 6 | Revue code | Basse |
=BDNBVAL(A1:C6; "Responsable"; E1:E2)La fonction filtre d'abord les 3 tâches dont la Priorité vaut Haute (critère en E1-E2), puis compte celles dont la colonne Responsable est non vide : 2 sur 3. Comme le compte est inférieur au total, tu sais immédiatement qu'une tâche critique n'a pas de responsable assigné.
Astuce de pro : Pour détecter les tâches haute priorité SANS responsable, tu peux utiliser la formule indirecte : total tâches haute priorité moins BDNBVAL. Crée une cellule avec =BDNB(A1:C6;"Priorité";E1:E2) - BDNBVAL(A1:C6;"Responsable";E1:E2) pour obtenir directement le nombre de tâches non assignées.
Analyste : mesurer le taux de complétion d'une enquête client
Tu analyses les résultats d'une enquête de satisfaction et tu veux savoir combien de clients Premium ont répondu à la question Satisfaction.
| A | B | C | |
|---|---|---|---|
| 1 | Client | Niveau | Satisfaction |
| 2 | Client A | Premium | 9/10 |
| 3 | Client B | Standard | 7/10 |
| 4 | Client C | Premium | |
| 5 | Client D | Premium | 8/10 |
| 6 | Client E | Premium |
=BDNBVAL(A1:C6; "Satisfaction"; E1:E2)Avec le critère Niveau = Premium (en E1-E2), la fonction retient les 4 clients Premium puis compte ceux dont la colonne Satisfaction est renseignée : 2 sur 4, soit un taux de complétion de 50 %. En divisant ce résultat par le nombre total de clients Premium, tu obtiens directement ce taux en pourcentage.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes 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 sur la fonction BDNBVAL
Quelle est la différence entre BDNB et BDNBVAL ?
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.
BDNBVAL compte-t-elle les cellules vides ?
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.
Comment définir des critères complexes avec BDNBVAL ?
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).
Pourquoi BDNBVAL retourne 0 alors que j'ai des données ?
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).
Puis-je utiliser BDNBVAL avec des données importées d'une autre source ?
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.
Comment vérifier qu'une formule BDNBVAL fonctionne correctement ?
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
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
