BDNB : La formule complète pour compter les enregistrements en base de données
=BDNB(base_de_données; champ; critères)La formule BDNB (Base De Données NomBre) est l'une des fonctions les plus puissantes d'Excel pour analyser des données structurées. Elle permet de compter le nombre d'enregistrements dans une base de données qui répondent à des critères précis, offrant une flexibilité bien supérieure aux simples formules de comptage. Contrairement à COUNTIF qui fonctionne sur une seule colonne, BDNB travaille sur des plages complexes et accepte plusieurs critères simultanés, ce qui en fait un outil indispensable pour les analystes de données et les gestionnaires. Cette formule est particulièrement utile lorsque vous travaillez avec des données organisées en tableau avec en-têtes, où vous devez filtrer selon plusieurs conditions. Que vous gériez un portefeuille clients, un inventaire de produits ou des résultats de ventes, BDNB vous permet d'extraire rapidement le nombre d'enregistrements correspondant à vos critères sans créer de colonnes intermédiaires. Son apprentissage est essentiel pour tous les utilisateurs Excel avancés souhaitant automatiser leurs analyses de données.
Syntaxe et paramètres
La syntaxe complète de BDNB est : =BDNB(base_de_données; champ; critères). Le paramètre base_de_données représente l'ensemble de votre plage de données incluant obligatoirement les en-têtes de colonnes. C'est la totalité du tableau sur lequel portera l'analyse. Le paramètre champ désigne la colonne à compter, soit par son numéro (1 pour la première colonne de la base), soit par le nom de l'en-tête entre guillemets. Le paramètre critères est une plage contenant vos conditions de filtrage, structurée avec des en-têtes identiques à ceux de votre base de données. Vous devez absolument respecter cette cohérence d'en-têtes pour que la fonction fonctionne correctement. Les critères permettent de combiner plusieurs conditions : si vous placez deux critères sur la même ligne, ils fonctionnent en ET logique ; sur des lignes différentes, ils fonctionnent en OU logique. Cette flexibilité distingue BDNB de ses concurrentes et la rend particulièrement adaptée aux requêtes complexes.
databasefieldcriteriaExemples pratiques
Compter les ventes au-dessus d'un montant dans une région
=BDNB(A1:D100;"Montant";G1:H2)La base de données s'étend de A1 à D100 avec en-têtes. On compte la colonne 'Montant'. Les critères en G1:H2 contiennent 'Région' avec 'Île-de-France' en G2 et 'Montant' avec '>5000' en H2. Les deux critères sur la même ligne s'appliquent en ET logique.
Compter les clients inactifs depuis plus de 6 mois
=BDNB(A1:D500;1;F1:G2)On compte la première colonne (ID) pour avoir un enregistrement par client. Le critère 'Statut' = 'Actif' et 'Dernière_Visite' < AUJOURD'HUI()-180 filtre les clients inactifs. Le 1 indique la colonne ID à compter.
Compter les produits en rupture de stock dans plusieurs catégories
=BDNB(A1:D1000;"Référence";F1:G3)La plage de critères F1:G3 contient deux conditions sur des lignes différentes : ligne 2 'Catégorie'='Électronique' ET 'Stock'=0, ligne 3 'Catégorie'='Informatique' ET 'Stock'=0. Ces lignes créent un OU logique entre les deux groupes.
Points clés à retenir
- BDNB compte les enregistrements d'une base de données selon des critères structurés, offrant plus de flexibilité que COUNTIF pour les analyses complexes.
- La cohérence des en-têtes entre la base de données et la plage de critères est CRITIQUE : une seule différence provoque une erreur #VALUE!
- Les critères sur la même ligne s'appliquent en ET logique ; sur des lignes différentes, en OU logique, permettant des requêtes sophistiquées.
- Utilisez les noms de colonnes entre guillemets pour le paramètre 'champ' plutôt que des numéros : plus lisible et moins sujet aux erreurs.
- BDNB accepte les caractères génériques (* et ?) pour les critères texte, offrant une puissance de filtrage comparable aux bases de données professionnelles.
Astuces de pro
Utilisez des noms de plages pour vos critères : cliquez sur Formules > Définir un nom pour créer 'MesCritères'. Cela rend votre formule plus lisible et maintenable : =BDNB(BaseDonnées;"Montant";MesCritères).
Impact : Augmente la clarté du code et facilite les modifications futures, surtout dans les classeurs collaboratifs.
Pour déboguer BDNB, créez une colonne temporaire avec COUNTIFS utilisant les mêmes critères. Si les résultats diffèrent, c'est un problème d'en-têtes ou de structure. Comparez côte à côte pour identifier l'erreur rapidement.
Impact : Réduit le temps de débogage de 80% en isolant le problème immédiatement.
Placez votre plage de critères à côté de vos données principales pour la visualiser facilement. Utilisez une validation de données (liste déroulante) pour les valeurs de critères afin d'éviter les erreurs de saisie.
Impact : Rend les formules plus robustes et facilite l'utilisation par d'autres utilisateurs sans connaissances Excel avancées.
Pour les critères numériques, encadrez-les avec des guillemets si ce sont des opérateurs : '>5000' pas >5000. Excel interprète différemment selon le contexte, les guillemets garantissent la cohérence.
Impact : Élimine les erreurs subtiles où la formule semble correcte mais retourne 0 au lieu du résultat attendu.
Combinaisons utiles
BDNB + SI pour un comptage conditionnel avancé
=SI(BDNB(A1:D100;"Montant";G1:H2)>10;"Nombreux";"Peu")Combine BDNB avec SI pour qualifier le résultat. Si le nombre de ventes en Île-de-France > 5000€ dépasse 10, affiche 'Nombreux', sinon 'Peu'. Utile pour les tableaux de bord décisionnels.
BDNB + BDSUM pour compter ET sommer simultanément
=BDNB(A1:D100;"Montant";G1:H2)&" ventes pour "&BDSUM(A1:D100;"Montant";G1:H2)&"€"Affiche à la fois le nombre de ventes et leur montant total avec la même plage de critères. Crée un résumé complet en une seule formule, idéal pour les rapports synthétiques.
BDNB imbriquée pour des comparaisons multiples
=BDNB(A1:D100;"Montant";G1:H2)-BDNB(A1:D100;"Montant";G1:G2&">"&H2)Compte les enregistrements dans une plage tout en soustrayant ceux qui dépassent un seuil. Permet de segmenter les données en catégories avec une seule formule sans colonnes intermédiaires.
Erreurs courantes
Cause : Les en-têtes de la plage de critères ne correspondent pas exactement aux en-têtes de la base de données (majuscules/minuscules différentes, espaces supplémentaires, ou noms différents).
Solution : Vérifiez l'orthographe exacte des en-têtes. Utilisez la fonction EXACT() pour comparer si nécessaire. Copier-coller les en-têtes plutôt que de les retaper garantit la correspondance.
Cause : La plage de base de données ou la plage de critères a été supprimée ou les références de cellules sont invalides suite à une suppression de lignes/colonnes.
Solution : Utilisez des références absolues ($A$1:$D$100) pour la base de données. Reconstruisez les plages de critères en vérifiant qu'elles existent toujours. Utilisez des noms de plages pour plus de stabilité.
Cause : Le paramètre 'champ' contient un numéro de colonne invalide (0, négatif, ou supérieur au nombre de colonnes de la base de données).
Solution : Vérifiez que le numéro de colonne est entre 1 et le nombre total de colonnes. Utilisez plutôt le nom de la colonne entre guillemets pour éviter cette erreur : "Montant" au lieu de 4.
Checklist de dépannage
- 1.Vérifiez que les en-têtes de la base de données et de la plage de critères sont identiques (même casse, pas d'espaces supplémentaires)
- 2.Confirmez que la plage de critères inclut les en-têtes et au moins une ligne de critères réels
- 3.Testez que le paramètre 'champ' existe : utilisez le nom entre guillemets plutôt qu'un numéro pour plus de sécurité
- 4.Assurez-vous que les types de données correspondent : dates formatées comme dates, nombres comme nombres, pas de texte mélangé
- 5.Vérifiez la syntaxe des critères avec opérateurs : '>5000' et '<2024-01-01' nécessitent les guillemets externes
- 6.Testez avec une plage de critères simple (un seul critère) pour isoler le problème avant de complexifier
Cas particuliers
La base de données contient des doublons d'en-têtes (deux colonnes avec le même nom)
Comportement : BDNB compte uniquement les enregistrements de la PREMIÈRE colonne portant ce nom, ignorant les colonnes dupliquées.
Solution : Renommez les colonnes dupliquées avec des suffixes uniques : 'Montant_Vente' et 'Montant_Remise' au lieu de deux 'Montant'.
C'est une limitation de la conception de BDNB, pas un bug.
Un critère contient la valeur zéro ou une chaîne vide
Comportement : BDNB traite zéro et chaîne vide comme des critères valides et les compte correctement, mais peut être confus avec 'pas de critère'.
Solution : Pour compter les cellules vides, utilisez le critère '' (deux guillemets vides). Pour zéro, utilisez 0 sans guillemets.
Testez explicitement ces cas pour éviter les ambiguïtés.
La plage de critères s'étend au-delà de la première ligne de critères (plusieurs lignes de critères vides)
Comportement : BDNB ignore les lignes vides dans la plage de critères et fonctionne normalement, mais c'est peu lisible.
Solution : Nettoyez votre plage de critères pour inclure uniquement les en-têtes et les lignes contenant des critères réels.
Bien que toléré, cela peut causer de la confusion lors de la maintenance du classeur.
Limitations
- •BDNB ne fonctionne qu'avec des plages contiguës : vous ne pouvez pas avoir de lignes ou colonnes masquées ou filtrées qui affectent le comptage (contrairement à SUBTOTAL).
- •La plage de critères doit avoir la même structure que la base de données avec en-têtes identiques : cette rigidité la rend moins flexible que SUMPRODUCT pour des analyses très complexes.
- •BDNB n'existe pas nativement dans Google Sheets, ce qui pose problème pour les classeurs collaboratifs cloud : vous devez utiliser des alternatives comme COUNTIFS.
- •Les critères avec des calculs complexes ne sont pas supportés : vous ne pouvez pas écrire '=Montant*2>5000' comme critère, seulement des conditions simples comme '>5000'.
Alternatives
Compatibilité
✓ Excel
Depuis Excel 2007
=BDNB(base_de_données; champ; critères) - Identique dans toutes les versions jusqu'à Excel 365✗Google Sheets
Non disponible
✓LibreOffice
=BDNB(base_de_données; champ; critères) - Syntaxe identique à Excel