Monsieur Excel
Pour tout savoir faire sur Excel !

16 mars 2006

Intro à la fonction Recherche()

Prenons l’exemple du tarif postal ci-contre : nous voulons obtenir en C13 les frais d’expédition d’un colis dont le poids est indiqué en C12.

Nous pourrions entrer la formule :
=si(C12<B4;C3;si(C12<B5;C4;
si(C12<B6;C5;si(C12<B7;C6...


Une telle formule est tout à fait légale mais présente deux inconvénients majeurs.

Tout d’abord, elle est totalement indigeste, sans compter qu’il y a une limite au nombre de fonctions que l’on peut imbriquer.

Mais surtout, elle n’est pas flexible du tout : si l’on insère une nouvelle catégorie pour 750 gr., la formule est à reprendre.

La bonne formule est ici : =recherche(C12;B3:C10), selon la syntaxe =recherche(valeur;matrice).

Pour bien utiliser la fonction Recherche(), il importe de connaître l’algorithme qui est à la base de son fonctionnement. En fait, Excel compare le poids visé (ici, 2.641 g.) à 0 gr. Si le poids visé est supérieur ou égal, Excel compare au poids suivant, 50 gr. Puis au poids suivant... jusqu’à ce qu’il trouve un poids supérieur au poids visé.

Quand il le trouve enfin, Excel remonte d’une ligne et ramène le résultat le plus à droite de cette ligne dans la table sélectionnée, ici 4,83.

S’il ne trouve pas de poids supérieur, la valeur de la cellule en bas et à droite de la table est retenue.

Conséquence n°1 : il faut que la première colonne soit triée en ordre croissant pour que notre objectif puisse être atteint.

Conséquence n°2 : si le poids visé est inférieur au premier poids de la table, on obtient une erreur : en effet, Excel sort alors de la table en essayant de remonter d’une ligne.

2 Commentaire(s):

  • Merci pour ces explications très claires et précises.J'ai aussi apprécié les 2 conséquences bien à propos.

    By Anonymous Anonyme, sur 9:05 AM  

  • L'explication n'est pas la bonne : vous décrivez un algorithme de recherche séquentielle alors qu'il s'agit d'un algorithme de recherche binaire ou dichotomique. L'élément essentiel pour ce type d'algorithme est que la matrice de recherche (1ère colonne en l'occurrence) soit triée de manière croissante. La recherche s'effectue comme pour la recherche d'un mot dans le dictionnaire : le tableau est divisé en 2 parties égales et la première recherche s'effectue sur la valeur centrale. Si elle est supérieure à la valeur cherchée, le même processus se poursuit sur la sous-partie supérieure en la divisant encore en 2 (diviser pour régner), mutatis mutandis. Le processus se répété jusqu'à ce que les sous-parties ne soient composés que d'une seule unité.
    Cordialement,
    Ntonga Stephane

    By Blogger Stéphane Ntonga, sur 4:14 PM  

Enregistrer un commentaire

<< Accueil