Fonctions de recherche et gestion des erreurs du tableur
À retenir
Cadre programme : DCG, programme 2025 (arrêté du 4 août 2025, première session 2027), UE 8 « Systèmes d'information de gestion », partie 2 « Gérer des données du système d'information », sous-partie 2.2.1 « Automatiser la résolution des problèmes de gestion » (formules utilisant des fonctions de recherche d'informations ; éléments d'ergonomie dont la gestion des erreurs).
Pourquoi c'est central à l'examen : retrouver le taux de remise d'un client, le tarif d'une zone ou la tranche d'un barème à partir d'une table est le geste le plus fréquent de la gestion de données. L'écrit de 4 h attend que le candidat choisisse entre recherche exacte et approchée, sache lire une erreur et empêche qu'une valeur absente ne se propage dans les totaux.
01Rechercher une information dans une table
1.1 Le principe
Une table de référence (clients, tarifs, barèmes) est maintenue une fois dans le classeur ; les autres feuilles y cherchent l'information dont elles ont besoin à partir d'une clé (un code client, un montant). On évite ainsi de recopier à la main les données et on garantit leur cohérence.
1.2 RECHERCHEV
RECHERCHEV(valeur_cherchée;table;no_colonne;valeur_proche)
| Argument | Rôle |
|---|---|
valeur_cherchée | La clé à retrouver (un code, un montant) |
table | La plage qui contient la clé dans sa première colonne, puis les informations à renvoyer |
no_colonne | Le rang de la colonne à renvoyer, la première colonne de la table portant le rang 1 |
valeur_proche | FAUX (ou 0) pour une recherche exacte ; VRAI (ou 1) pour une recherche approchée |
Si le dernier argument est omis, le tableur applique la recherche approchée. C'est l'erreur de syntaxe la plus coûteuse : en écrivant RECHERCHEV(A5;Table_clients;3), on lance une recherche approchée sans le savoir.
1.3 Recherche exacte (FAUX)
On cherche une correspondance parfaite : un code client, une référence article. Si la clé est absente, la fonction renvoie l'erreur #N/A (valeur non disponible). Les données n'ont pas besoin d'être triées.
1.4 Recherche approchée (VRAI) : le barème par tranches
On cherche la plus grande valeur inférieure ou égale à la valeur cherchée. C'est le fonctionnement d'un barème : la première colonne contient le seuil bas de chaque tranche.
Conditions impératives :
- la première colonne de la table est triée par ordre croissant ; sinon le résultat est imprévisible ;
- la première tranche commence en dessous de toute valeur possible (souvent 0) ; si la valeur cherchée est plus petite que le premier seuil, on obtient
#N/A.
| CA cherché | Seuil retrouvé | Raisonnement |
|---|---|---|
| 4 999,99 | 0 | Inférieur à 5 000 |
| 5 000 | 5 000 | Égal au seuil : il appartient à la tranche qui commence à ce seuil |
| 12 750 | 10 000 | Plus grand seuil inférieur ou égal |
1.5 Quand utiliser quoi
| Situation | Mode |
|---|---|
| Code client, référence article, numéro de compte | Exact (FAUX) |
| Taux selon une tranche de montant, de poids, d'ancienneté | Approché (VRAI) sur table triée |
1.6 Les limites de RECHERCHEV
- La clé doit être dans la première colonne de la table : on ne peut pas chercher « vers la gauche ».
- Le
no_colonneest un rang saisi à la main : si on insère une colonne dans la table, le rang ne suit pas toujours et l'on peut renvoyer la mauvaise colonne sans erreur apparente.
1.7 INDEX et EQUIV : une alternative plus robuste
| Fonction | Syntaxe | Rôle |
|---|---|---|
EQUIV | EQUIV(valeur_cherchée;plage;type) | Renvoie la position de la valeur dans la plage |
INDEX | INDEX(plage;no_ligne;no_colonne) | Renvoie le contenu de la cellule située à la position indiquée (no_colonne est facultatif pour une plage à une seule colonne) |
Le troisième argument d'EQUIV sélectionne le mode : 0 pour une correspondance exacte ; 1 (valeur par défaut) pour la plus grande valeur inférieure ou égale dans une plage triée par ordre croissant ; -1 pour la plus petite valeur supérieure ou égale dans une plage triée par ordre décroissant.
On les combine :
=INDEX(Clients!$B$2:$B$6;EQUIV(A5;Clients!$A$2:$A$6;0))
Lecture : EQUIV trouve la ligne du code A5 dans la colonne des codes ; INDEX renvoie le nom situé à la même ligne dans la colonne des noms.
Intérêts : la colonne renvoyée est désignée par sa plage (pas par un rang), donc l'insertion d'une colonne ne casse rien ; la clé n'est pas obligée d'être dans la première colonne ; on peut combiner deux EQUIV pour une recherche à double entrée (ligne et colonne).
02Gérer les erreurs
2.1 Les types d'erreurs
| Erreur | Cause habituelle | Exemple |
|---|---|---|
#N/A | Valeur cherchée absente de la table | RECHERCHEV("C006";...;FAUX) sur une table sans C006 |
#VALEUR! | Opération sur un type inadapté (texte à la place d'un nombre) | =A2+B2 quand A2 contient n.c. |
#REF! | Référence supprimée ou hors plage | Colonne supprimée à laquelle une formule se référait |
#DIV/0! | Division par zéro (ou par une cellule vide) | =B2/C2 avec C2 égal à 0 |
#NOM? | Nom de fonction ou de plage inconnu (faute de frappe) | =SOMMME(B2:B5) |
#NOMBRE! | Nombre invalide pour la fonction | Racine carrée d'un nombre négatif |
#NUL! | Intersection vide de deux plages | Rare ; une espace saisie à la place d'un séparateur |
L'écriture exacte de ces codes peut varier légèrement d'un tableur à l'autre ; on les reconnaît à leur forme générale. La fonction TYPE.ERREUR(cellule) renvoie le numéro de l'erreur d'une cellule : 1 pour #NUL!, 2 pour #DIV/0!, 3 pour #VALEUR!, 4 pour #REF!, 5 pour #NOM?, 6 pour #NOMBRE!, 7 pour #N/A.
Une rangée de croisillons (#####) n'est pas une erreur de calcul : la colonne est trop étroite pour afficher le résultat.
Une erreur se propage : une cellule qui contient #N/A fait renvoyer #N/A à toutes les formules qui l'utilisent, y compris SOMME. Il faut donc la traiter à la source.
2.2 Tester une cellule
| Fonction | Renvoie VRAI quand... |
|---|---|
ESTVIDE(cellule) | la cellule est vide |
ESTNUM(cellule) | la cellule contient un nombre |
ESTTEXTE(cellule) | la cellule contient du texte |
ESTERREUR(cellule) | la cellule contient n'importe quelle erreur |
ESTNA(cellule) | la cellule contient l'erreur #N/A seulement |
Ces fonctions s'emploient dans le test d'un SI : =SI(ESTNUM(B3);B3*Taux_TVA;"Montant non numérique").
2.3 SIERREUR
SIERREUR(valeur;valeur_si_erreur) renvoie valeur si elle ne produit pas d'erreur, sinon valeur_si_erreur.
=SIERREUR(RECHERCHEV(A5;Table_clients;2;FAUX);"Client inconnu")
C'est pratique, mais SIERREUR masque toutes les erreurs : une faute de frappe dans le nom d'une fonction (#NOM?) ou une plage mal sélectionnée donne aussi « Client inconnu ». Deux bonnes pratiques :
- choisir une valeur de remplacement qui se voit (un message, pas un 0 silencieux) ;
- tester la cause précise quand c'est possible :
=SI(ESTNA(EQUIV(A5;codes;0));"Client inconnu";...)ne traite que l'absence de la clé.
Pour la division, on préfère tester la cause : =SI(C2=0;"n.d.";B2/C2) plutôt que d'envelopper la division dans SIERREUR.