Aller au contenu principal

Qu'est-ce que la fonction BDNBVAL ?

Définition
La fonction BDNBVAL compte les cellules non vides d'un champ dans une base de données structurée, en ne retenant que les lignes qui correspondent aux critères définis dans une zone séparée.

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

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.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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.

1

base_de_données

: la plage complète de ta base de données, incluant obligatoirement la ligne d'en-têtes

Par 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.

2

champ

: la colonne sur laquelle tu veux compter les cellules non vides

Tu 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.

3

critères

: une zone séparée de ta base qui contient les conditions de filtrage

La 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.

Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDNBVAL(.
  2. 2
    En 1er argument : sélectionne le tableau entier avec sa ligne d'en-têtes, A1:C15. Les titres Employé, Département et Certification font 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.
  3. 3
    En 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 saisissant 3, mais le nom reste lisible même si l'ordre des colonnes change un jour.
  4. 4
    En 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ête Département en E1, puis tu écris IT juste en dessous. Cet en-tête doit être identique caractère pour caractère à celui du tableau, sinon la fonction renvoie 0 sans le moindre message.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=BDNBVAL(A1:C15; "Certification"; E1:E2)
Explication
La fonction lit la zone de critères, ne retient que les sept lignes du département 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDNBVAL(.
  2. 2
    En 1er argument : sélectionne le tableau complet des collaborateurs, ligne d'en-têtes comprise, A1:D8. Les quatre titres Collaborateur, Site, Contrat et Visite médicale forment le vocabulaire que les deux arguments suivants réutilisent. Aucun d'eux ne doit rester en dehors de la sélection.
  3. 3
    En 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.
  4. 4
    En 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 recopies Site en F1 et Contrat en G1, puis tu écris Lyon en F2 et CDI en 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=BDNBVAL(A1:D8; "Visite médicale"; F1:G2)
Explication
Deux critères posés côte à côte sur une même ligne de la zone valent un ET : quatre collaborateurs sont à la fois sur 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDNBVAL(.
  2. 2
    En 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.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : sélectionne la zone qui porte le seuil, E1:E2. Tu recopies l'en-tête Montant en E1, puis tu écris la condition >=500 en E2 au lieu d'un montant exact. Viser un autre seuil revient alors à réécrire E2, sans jamais rouvrir la formule.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=BDNBVAL(A1:C8; "Commentaire"; E1:E2)
Explication
Un critère n'est pas forcément une valeur exacte : la condition >=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.
L’erreur fatale
BDNBVAL considère une cellule qui ne contient que des espaces comme non vide, et la compte quand même. Après un import, ton total peut donc gonfler sans raison visible. Un coup de SUPPRESPACE sur la colonne avant de compter règle le problème.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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; ...).

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreBDNBVALNBVALNB.SIBDNB
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éeNonUn seul critèreOui, zone séparée
Critères sur colonnes différentesOuiNonNonOui
Zone de critères séparéeObligatoireNon applicableNon applicableObligatoire
Cas d'usage idéalComptage complexe, filtre multi-colonnesComptage simple d'une plageComptage avec 1 critèreComptage de nombres avec filtres
FAQ

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.

Ressources

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