Aller au contenu principal

Qu'est-ce que la fonction BDLIRE ?

Définition
La fonction BDLIRE extrait la valeur unique d'un champ d'une base de données pour l'enregistrement qui correspond aux critères. Si plusieurs enregistrements correspondent, elle retourne l'erreur #NOMBRE! ; si aucun ne correspond, elle retourne l'erreur #VALEUR!.

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

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.

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

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.

1

base_de_données

: la plage de cellules qui contient ta base de données, en-têtes inclus

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

2

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

3

critères

: une plage séparée qui contient tes conditions de recherche

Elle 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:G2F1 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.

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

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDLIRE(.
  2. 2
    En 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 titres Produit, Référence et Prix pour savoir quelle colonne porte quel nom.
  3. 3
    En 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.
  4. 4
    En 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ête Référence recopié en E1 et la valeur REF-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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Au final, ta formule devrait ressembler à ça :=BDLIRE(A1:C11; "Prix"; E1:E2)
Explication
La fonction parcourt les dix lignes, ne retient que celle dont la référence vaut 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDLIRE(.
  2. 2
    En 1er argument : sélectionne la base de données avec sa ligne d'en-têtes, A1:C7. Les titres Produit, Pays et Prix sont le vocabulaire dont la fonction BDLIRE se sert ensuite pour reconnaître le champ demandé et tes critères.
  3. 3
    En 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.
  4. 4
    En 3ᵉ argument : sélectionne la zone de critères, E1:F2. Elle occupe deux colonnes, avec l'en-tête Produit recopié en E1 et Pays en F1, puis Table Oslo écrit en E2 et Espagne en 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Voici la formule que tu obtiens à la fin :=BDLIRE(A1:C7; "Prix"; E1:F2)
Explication
Deux critères posés côte à côte sur une même ligne de la zone valent un ET : la fonction ne garde que la ligne qui est à la fois 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =BDLIRE(.
  2. 2
    En 1er argument : sélectionne la base de données avec sa ligne d'en-têtes, A1:C6. La fonction BDLIRE y lit les titres Produit, Référence et Prix avant même de commencer sa recherche.
  3. 3
    En 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.
  4. 4
    En 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ête Produit recopié en E1 et la valeur Casque 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.
  5. 5
    Ferme la parenthèse et appuie sur Entrée.
Une fois les morceaux assemblés, ta formule donne ça :=BDLIRE(A1:C6; "Prix"; E1:E2)
Explication
Trois lignes portent le produit 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 €.
Vrai ou faux ?
« Une erreur sur BDLIRE, c'est forcément que rien n'a été trouvé. » Faux. Quand plusieurs lignes correspondent, elle renvoie #NOMBRE! parce qu'elle refuse de choisir. C'est voulu : BDLIRE garantit un résultat unique. Le #VALEUR! dit l'inverse, aucune ligne ne correspond.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreBDLIRERECHERCHEVINDEX-EQUIVFILTRE
Critères multiplesNatifNécessite une colonne auxiliaireComplexe à écrireNatif
Logique ET/OUOui (zone de critères)NonNonOui
Résultats multiplesNon (une seule valeur)Non (une seule valeur)Non (une seule valeur)Oui (tableau dynamique)
DisponibilitéToutes versionsToutes versionsToutes versionsExcel 365 uniquement
Cas d'usage principalExtraction précise multi-critèresRecherche simple par une colonneRecherche flexible dans une colonneExtraction de plusieurs lignes
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec BDLIRE

1Astuce

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.

2Astuce

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.

3Astuce

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

Le combo gagnant
Quand BDLIRE renvoie #NOMBRE!, tu sais que plusieurs lignes correspondent, mais pas combien. Lance BDNB avec les mêmes critères : le compte exact te dit tout de suite l'ampleur du doublon et quel critère ajouter pour retomber sur une ligne unique.
FAQ

Questions fréquentes

Si plusieurs enregistrements correspondent à tes critères, BDLIRE ne sait pas lequel choisir et retourne #NOMBRE!. C'est l'erreur la plus courante. Affine tes critères pour n'obtenir qu'un seul résultat, ou utilise BDSOMME ou BDMOYENNE si tu veux agréger plusieurs valeurs.

Ressources

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