Monsieur Excel
Pour tout savoir faire sur Excel !

05 mars 2011

RechercheH et V avec « FAUX »

La grande différence entre l’exemple du fichier de personnel utilisé il y a quatre jours et l’exemple de frais postaux des 21 et 25 février est que, dans le cas du fichier de personnel, les valeurs de code intermédiaires correspondent à des erreurs. Si en effet vous entrez « Jules » comme prénom, au lieu de recevoir un message d’erreur, vous obtiendrez les résultats de Jacques Lerose. Ce n’était pas le cas pour les frais postaux où, par exemple, on pouvait avoir pour un tarif de 0,95 € tous les colis allant de 20 g. inclus à 50 g. exclus !

Si l’on voulait trouver le nom de famille en E15 à partir du prénom en E14, tout en signalant les erreurs éventuelles, il fallait utiliser une formule du type : =si(E14=recherche(E14;D3:D11);recherche(E14;D3:E11);"Erreur !")

Il fallut attendre de nombreuses années encore avant que, pour résoudre ce problème, une seconde syntaxe ne soit introduite à chacune de ces deux nouvelles fonctions : =recherchev(valeur;matrice;n°col;exact) et =rechercheh(valeur;matrice;n°lig;exact).

Si l’argument « exact » est absent ou VRAI, la fonction rechercheH ou V fonctionne selon le même algorithme que la fonction recherche(). Si en revanche ce quatrième argument est FAUX, un algorithme totalement différent est utilisé.

Voici ce qu’il donne pour rechercheV : on compare la valeur aux valeurs de la première colonne en commençant par le haut de la colonne ; et on descend, tant que l’on n’a pas trouvé la valeur cherchée. Si l’on parvient à la fin de la colonne sans l’avoir trouvée, la fonction renvoie #NA ! Sinon, elle s’arrête dès qu’elle trouve la valeur (à sa première occurrence, s’il y en a plusieurs) et renvoie alors le contenu de la colonne n°col de la matrice.

Remarque 1 – La conséquence immédiate de l’utilisation de rechercheV (resp. H) avec FAUX en quatrième argument est que la première colonne (resp. ligne) n’a plus besoin d’avoir des valeurs croissantes !

Remarque 2 – Compte tenu de ce nouvel algorithme, s’il y a plusieurs « Gilles » dans la liste, c’est toujours le premier que l’on obtiendra quand le quatrième argument sera FAUX. Alors que ce sera toujours le dernier avec VRAI ou sans quatrième argument…

1 Commentaire(s):

  • En testant RECHERCHEV en mode exact ("FAUX" !), je me suis aperçu que la table de recherche ne pouvait pas dépasser 100.000 lignes. A 100.001, RECHERCHEV renvoie une erreur...
    Curieux quand même comme limitation quand Excel 2010 propose plus d'1000.000 de lignes. Pourquoi s'arrêter à 100.000 ? question de principe.
    Plus que curieux, mais surtout gênant, cette limite n'est pas du tout documentée chez Microsoft.
    Alors, si ça peut intéresser certains, voici une petite "Function" qui généralise RECHERCHEV avec "FAUX" :
    Function MaRECHERCHEV(varValeur As Variant, _
    rngTable As Range, intC As Integer)
    Application.Volatile
    MaRECHERCHEV = rngTable.Columns(1). _
    Find(what:=varValeur, LookIn:=xlValues, _
    lookat:=xlWhole).Offset(0, intC - 1).Value
    End Function

    By Anonymous cduigou, sur 1:50 PM  

Enregistrer un commentaire

<< Accueil