Qu'est-ce que la fonction BDLIRE ?
Tu sors BDLIRE (DGET en anglais) le jour où RECHERCHEV ne suffit plus, parce que ta condition ne tient pas sur une seule colonne mais sur le croisement de plusieurs critères à la fois. C'est la fonction à choisir quand tu veux être certain de ramener une seule ligne, pas une réponse approximative si plusieurs enregistrements se ressemblent.
Concrètement, c'est elle qui te permet de retrouver l'email du responsable achats d'une entreprise précise, le stock d'un produit dans un entrepôt donné, le salaire d'un employé dans un département spécifique, ou le budget d'un projet pour une année donnée. Une zone de critères bien construite remplace avantageusement une colonne auxiliaire ou des imbrications complexes.
Syntaxe
=BDLIRE(base_de_données; champ; critères)Clique sur un argument pour aller à son explication.
BDLIRE exige un résultat unique : si plusieurs lignes correspondent aux critères, elle renvoie #NOMBRE!. Ce comportement est volontaire, c'est une garantie d'unicité. Si tu veux agréger plusieurs correspondances, utilise BDSOMME ou BDMOYENNE.

Comprendre chaque paramètre de la fonction BDLIRE
Les trois arguments s'enchaînent dans cet ordre : d'abord ta base avec ses en-têtes, puis le champ que tu veux récupérer, enfin la zone de critères. Aucun n'est facultatif, et c'est ce troisième qui fait toute la différence : il vit dans une plage séparée, avec ses propres en-têtes identiques à ceux de la base, et c'est là que tu poses tes conditions.
base_de_données
: la plage de cellules qui contient ta base de données, en-têtes inclusPar exemple A1:D100. La première ligne doit absolument contenir les noms de colonnes : Excel s'en sert pour identifier les champs. Sans en-têtes, BDLIRE ne fonctionnera pas.
Tu peux aussi nommer cette plage (ex : VentesAnnuelles) et utiliser ce nom dans la formule pour la rendre plus lisible et faciliter la maintenance.
champ
: le nom de la colonne dont tu veux extraire la valeur, entre guillemets : `"Prix"` ou `"Email"`Tu peux aussi utiliser le numéro de la colonne dans la base de données (1 pour la première, 2 pour la deuxième, etc.), mais le nom est beaucoup plus lisible et résiste aux réorganisations de colonnes.
Attention : le nom doit correspondre exactement à l'en-tête de colonne, majuscules et espaces compris. "Prix TTC" n'est pas la même chose que "prix ttc".
critères
: une plage séparée qui contient tes conditions de rechercheElle doit avoir au minimum deux lignes : la première avec les noms de colonnes (identiques à ceux de ta base), et la deuxième avec les valeurs recherchées. Par exemple F1:G2 où F1 contient "Ville", F2 contient "Paris", G1 contient "Statut", G2 contient "Actif".
Mets les conditions sur la même ligne pour un ET logique, sur des lignes différentes pour un OU logique. Tu peux combiner les deux pour des requêtes complexes.

Exemples pratiques pas à pas
Comment extraire le prix d'une référence avec la fonction BDLIRE
Un client t'appelle, te lit une référence et attend le prix tout de suite. Ton catalogue aligne dix articles avec leur référence et leur tarif, et tu ne veux ni faire défiler la liste ni annoncer la ligne d'à côté. La fonction BDLIRE lit une zone de critères posée juste à côté du tableau et te renvoie le prix de la seule ligne qui y correspond.
- 1Dans une cellule, écris
=BDLIRE(. - 2En 1er argument : sélectionne la base de données avec sa ligne d'en-têtes,
A1:C11. Prendre la première ligne n'est pas une maladresse de sélection mais une obligation, car la fonction BDLIRE se sert des titresProduit,RéférenceetPrixpour savoir quelle colonne porte quel nom. - 3En 2ᵉ argument : écris le nom de la colonne à lire,
"Prix". Les guillemets encadrent ce nom, qui doit reprendre l'en-tête de la colonne C au caractère près, majuscules et espaces compris. C'est la valeur de cette colonne, et d'aucune autre, que la fonction ira chercher sur la ligne retenue. - 4En 3ᵉ argument : sélectionne la zone de critères,
E1:E2. Tu l'as préparée juste à côté du tableau, avec l'en-têteRéférencerecopié en E1 et la valeurREF-042écrite en E2. Une référence ne désignant qu'un seul article du catalogue, ce critère isole une ligne unique, et c'est précisément ce que la fonction BDLIRE exige pour accepter de répondre. - 5Ferme la parenthèse et appuie sur Entrée.
=BDLIRE(A1:C11; "Prix"; E1:E2)REF-042 (l'Article 2) et renvoie le contenu de sa colonne Prix, soit 3 990 €. Réécris une autre référence en E2 et le tarif se met à jour tout seul, sans que tu rouvres la formule.Comment croiser deux critères avec la fonction BDLIRE
Un acheteur espagnol te demande le tarif d'un meuble au téléphone, et lui annoncer le prix français te coûterait la marge de la commande. Ton tableau de tarifs répète chaque produit une fois par pays, donc le nom du meuble ne suffit plus à désigner une ligne. La fonction BDLIRE sait vérifier 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
=BDLIRE(. - 2En 1er argument : sélectionne la base de données avec sa ligne d'en-têtes,
A1:C7. Les titresProduit,PaysetPrixsont le vocabulaire dont la fonction BDLIRE se sert ensuite pour reconnaître le champ demandé et tes critères. - 3En 2ᵉ argument : écris le nom de la colonne à lire,
"Prix". Cette colonne est distincte des deux qui servent à filtrer, et c'est le cas le plus courant avec la fonction BDLIRE. - 4En 3ᵉ argument : sélectionne la zone de critères,
E1:F2. Elle occupe deux colonnes, avec l'en-têteProduitrecopié en E1 etPaysen F1, puisTable Osloécrit en E2 etEspagneen F2. Le nom du meuble seul laisserait deux lignes en course, une pour la France et une pour l'Espagne, et c'est la deuxième colonne de critères qui tranche entre elles. - 5Ferme la parenthèse et appuie sur Entrée.
=BDLIRE(A1:C7; "Prix"; E1:F2)Table Oslo et Espagne, puis renvoie son tarif de 379 €. Le nom du meuble seul retiendrait deux lignes (la France et l'Espagne), et la fonction refuserait alors de trancher.Comment corriger l'erreur #NOMBRE! de la fonction BDLIRE
Ta fiche tarifaire affiche #NOMBRE! ce matin alors que le produit est bien dans le tableau, et la commande part dans l'heure. En y regardant de près, ton catalogue décline le même modèle en trois versions, chacune avec sa référence et son tarif, donc le nom du produit désigne trois lignes au lieu d'une. La fonction BDLIRE ne renvoie jamais une valeur au hasard : quand plusieurs lignes répondent à tes critères, elle préfère te le signaler par une erreur.
- 1Dans une cellule, écris
=BDLIRE(. - 2En 1er argument : sélectionne la base de données avec sa ligne d'en-têtes,
A1:C6. La fonction BDLIRE y lit les titresProduit,RéférenceetPrixavant même de commencer sa recherche. - 3En 2ᵉ argument : écris le nom de la colonne à lire,
"Prix". C'est bien le tarif que tu veux afficher, et cet argument n'est pour rien dans l'erreur qui va apparaître. Il se contente de désigner la colonne dont la valeur sera renvoyée. - 4En 3ᵉ argument : sélectionne la zone de critères,
E1:E2. Tu l'as préparée à côté du tableau, avec l'en-têteProduitrecopié en E1 et la valeurCasque Studioécrite en E2. Cette zone est parfaitement valide, et c'est pourtant elle qui déclenche l'erreur, parce que trois lignes du catalogue portent ce nom de produit. - 5Ferme la parenthèse et appuie sur Entrée.
=BDLIRE(A1:C6; "Prix"; E1:E2)Casque Studio, et la fonction refuse de choisir entre 129 €, 159 € et 189 € : elle renvoie #NOMBRE! au lieu d'un tarif tiré au hasard. Remplace l'en-tête Produit par Référence en E1 et la valeur par REF-104 en E2, et le résultat tombe à 189 €.
Les erreurs fréquentes avec la fonction BDLIRE
BDLIRE a deux messages d'échec, et ils ne disent pas la même chose. Le #NOMBRE! signale que plusieurs lignes répondent à tes critères et qu'elle refuse d'en choisir une. Le #VALEUR! couvre les deux autres situations : soit aucune ligne ne correspond, soit la zone de critères elle-même est mal montée (en-têtes qui ne collent pas exactement à la base, ou une seule ligne au lieu des deux requises).
Plusieurs enregistrements correspondent aux critères
C'est l'erreur la plus courante avec BDLIRE. Si plusieurs lignes de ta base correspondent aux critères, la fonction retourne #NOMBRE! car elle ne sait pas laquelle choisir. Par exemple, chercher uniquement par ville alors que 50 clients habitent cette ville.
Solution : Ajoute des critères supplémentaires pour identifier un seul enregistrement. Si tu veux vraiment agréger plusieurs résultats, utilise BDSOMME, BDMOYENNE ou la fonction FILTRE (Excel 365).
Aucun enregistrement ne correspond aux critères
BDLIRE retourne aussi #VALEUR! si aucune ligne ne correspond. C'est souvent dû à une faute de frappe dans la zone de critères, un problème de casse, ou des espaces invisibles.
Solution : Vérifie que tes critères correspondent exactement aux données (copie-colle les en-têtes depuis la base). Entoure ta formule avec SIERREUR pour afficher un message clair : =SIERREUR(BDLIRE(...); "Non trouvé").
Les en-têtes de la zone de critères ne correspondent pas à ceux de la base
Si les noms de colonnes dans ta zone de critères ne correspondent pas exactement (au caractère près) aux en-têtes de ta base de données, BDLIRE ne trouvera rien et retournera #VALEUR!.
Solution : Copie-colle les en-têtes directement depuis ta base de données vers ta zone de critères. Un espace en trop ou une différence de casse suffit à faire échouer la formule.
Zone de critères mal structurée
La zone de critères doit absolument avoir une ligne d'en-têtes et au moins une ligne de valeurs. Si tu sélectionnes uniquement une ligne ou si ta zone est mal construite, la formule échoue.
Solution : Assure-toi que ta zone de critères a au minimum 2 lignes (en-têtes + valeurs). Même pour un seul critère, cette structure en 2 lignes minimum est obligatoire.

BDLIRE vs RECHERCHEV vs INDEX-EQUIV vs FILTRE
BDLIRE est idéale quand tu as une base structurée avec en-têtes et que tu dois extraire UNE valeur selon plusieurs critères complexes. Si tu as Excel 365, FILTRE est plus moderne et peut retourner plusieurs résultats. Pour un seul critère simple, RECHERCHEV suffit.
| Critère | BDLIRE | RECHERCHEV | INDEX-EQUIV | FILTRE |
|---|---|---|---|---|
| Critères multiples | Natif | Nécessite une colonne auxiliaire | Complexe à écrire | Natif |
| Logique ET/OU | Oui (zone de critères) | Non | Non | Oui |
| Résultats multiples | Non (une seule valeur) | Non (une seule valeur) | Non (une seule valeur) | Oui (tableau dynamique) |
| Disponibilité | Toutes versions | Toutes versions | Toutes versions | Excel 365 uniquement |
| Cas d'usage principal | Extraction précise multi-critères | Recherche simple par une colonne | Recherche flexible dans une colonne | Extraction de plusieurs lignes |

Astuces avancées avec BDLIRE
Utiliser des critères calculés dynamiques
Tu peux mettre des formules dans ta zone de critères pour créer des conditions dynamiques. Par exemple, pour chercher les enregistrements du mois en cours, écris =MOIS(AUJOURDHUI()) dans ta cellule de critère au lieu d'une valeur fixe. La zone se met à jour automatiquement chaque mois.
Combine BDLIRE avec cette technique pour créer des tableaux de bord qui se rafraîchissent sans intervention.
Déboguer avec BDNB avant BDLIRE
Si ta formule BDLIRE ne fonctionne pas, essaie d'abord =BDNB(base; "champ_numérique"; critères) avec les mêmes critères. Si BDNB retourne 0, aucun enregistrement ne correspond. Si elle retourne plus de 1, tu as plusieurs correspondances. Ça te dit exactement où est le problème sans avoir à parcourir la base manuellement.
Cette technique de débogage te fait gagner beaucoup de temps sur les grandes bases.
Utiliser des jokers dans les critères texte
BDLIRE accepte les jokers * et ? dans les critères texte. Pour trouver tous les noms commençant par Mar, écris Mar* dans ta zone de critères. Le * remplace n'importe quelle suite de caractères, le ? remplace un seul caractère.
Cela permet des recherches partielles sans saisir le libellé exact, très utile quand les données ont des variantes de saisie (Martin, Martin-Dupont, Martin J....).
Questions fréquentes
RECHERCHEV cherche une valeur dans la première colonne d'une table et retourne une colonne spécifique. BDLIRE utilise une zone de critères séparée qui permet des conditions multiples ET/OU. BDLIRE est plus puissante pour les critères complexes, mais aussi plus longue à mettre en place. Si tu n'as qu'un critère simple, RECHERCHEV suffit.
Dans ta zone de critères, mets les conditions sur la même ligne pour un ET logique (ex : Ville='Paris' ET Ventes>1000), ou sur des lignes différentes pour un OU logique (ex : Région='Nord' OU Région='Sud').
Tu peux combiner les deux pour des requêtes complexes : une ligne pour chaque combinaison ET, plusieurs lignes pour le OU entre ces combinaisons.
BDLIRE peut retourner n'importe quel type de données : texte, nombre, date, booléen. Elle extrait simplement la valeur du champ spécifié pour l'enregistrement qui correspond aux critères. Le nom peut prêter à confusion mais elle n'est pas limitée aux nombres.
BDLIRE retourne #VALEUR! si aucun enregistrement ne correspond. Entoure ta formule avec SIERREUR pour afficher un message personnalisé : =SIERREUR(BDLIRE(...); "Aucun résultat").
C'est indispensable pour rendre tes tableaux professionnels et éviter d'afficher des erreurs aux utilisateurs finaux.
Pour aller plus loin
Continue sur ta lancée après la fonction BDLIRE : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



