IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

CINQ bonnes raisons de préférer INDEX EQUIV à RECHERCHEV
Par Pierre Fauconnier

Le , par Pierre Fauconnier

0PARTAGES

Dans les illustrations qui suivent, j'ai rédigé la formule avec INDEX EQUIV et avec RECHERCHEV. Regardons ce qui se passe avec chaque formule lorsque l'organisation du tableau change...



1. RECHERCHEV impose que la colonne de recherche, c'est-à-dire celle qui contient l'identifiant, soit la première colonne du tableau.

C'est d'ailleurs précisé dans l'aide sur la fonction, l'explicatif de l'assistant fonction ou l'infobulle de la bibliothèque du ruban. C'est une contrainte car si je crée le tableau moi-même, je peux encore m'arranger, mais si mon tableau est le résultat d'une importation ou a été créé par une autre personne, j'ai un problème. Le déplacement d'une colonne pour la mettre en première position n'est pas toujours sans conséquences désastreuses pour le classeur.

De même, si par la suite, quelqu'un modifie mon tableau et déplace une colonne en première position, Le couple INDEX EQUIV est passé au travers de la catastrophe qui secoue RECHERCHEV...



2. Souvent avec RECHERCHEV, le numéro de la colonne contenant la valeur de retour est exprimé par une constante.


Si l'on veut "sécuriser" RECHERCHEV, il faut insérer deux fonctions pour le calcul de la position de la colonne, ce qui complexifie la formule et fait tomber l'argument que j'entends souvent lorsque je parle d'INDEX EQUIV: "Oui Pierre, mais INDEX EQUIV, c'est une fonction imbriquée dans une autre et ça c'est compliqué"...

Voyons ce qui arrive si j'insère une colonne avant la colonne du prix unitaire...



RechercheV ne renvoie plus la bonne valeur, et si d'autres RechercheV utilisent les colonnes à droite de P.U, c'est la même catastrophe partout. Le Coupe INDEX EQUIV, lui, continue bien sagement à nous donner le bon résultat... On a évidemment le même problème si on permute P.U. et Taille, uniquement pour RechercheV, bien sûr.



Pour éviter cela, il faudrait transformer la constante en variable, par exemple avec la fonction COLONNE()...



Alors, l'insertion ou la permutation de colonnes ne pose plus de problèmes...



Problème résolu? Oui, dans ce cas-ci. Remarquez au passage que l'argument d'une seule fonction face à INDEX EQUIV tombe ...

Tiens, et si je déplace mon tableau pour qu'il ne commence pas en A?



Gloups... Quand RECHERCHEV pas content, lui toujours faire ainsi... INDEX EQUIV continue inlassablement à me donner le bon résultat. Il y a une solution, mais elle passe par l'insertion d'une deuxième fonction COLONNE() dans la formule?



Ah, on arrive ENFIN à la même stabilité entre RECHERCHEV et le couple INDEX EQUIV, avec toujours la contrainte de la première colonne pour RECHERCHEV qui est inexistante pour INDEX EQUIV... Qui a dit que INDEX EQUIV était "compliqué"?

3. En cas de recherche d'une tranche de valeurs, RECHERCHEV ne permet de rechercher que le plancher d'une tranche.

RECHERCHEV et INDEX EQUIV permettent de chercher le plancher d'une tranche de valeurs, comme par exemple dans le cas d'une remise accordée en fonction d'une quantité vendue... Il suffit, pour RECHERCHEV, d'utiliser VRAI (ou de ne rien mettre) en quatrième argument, et pour EQUIV, d'utiliser 1 ou de rien mettre en troisième argument. Notez que dans les deux cas, les données doivent être triées par ordre croissant sur la colonne de recherche.



Imaginons maintenant que nous devions trouver le coût supposé d'un risque. Le principe de précaution veut que l'on surestime le risque plutôt que le sous estimer... Comment faire avec RECHERCHEV()? Ce n'est tout simplement pas possible, alors qu'ici aussi, INDEX EQUIV va s'en sortir sans problèmes...



4. Avec RECHERCHEV, on ne peut rechercher que la valeur (entière ou partielle) dans la colonne de recherche. Impossible de composer une matrice, soit pour la recherche, soit pour la récupération d'une valeur, soit pour les deux.

Et si vous avez le libellé et la taille comme valeur de recherche? Avec RECHERCHEV, ce n'est tout simplement pas possible, alors qu'INDEX EQUIV travaille en matricielle pour nous apporter la solution sans autre construction que la formule elle-même...



Pour que cela puisse être possible avec RECHERCHEV, il va falloir construire une colonne calculée A GAUCHE du tableau. Pratique lorsque les données sont importées dans un ordre de colonnes bien précis et immuable...



5. RECHERCHEV est plus lent que INDEX EQUIV.

Sur un tableau de 30.000 lignes de ventes recherchant le P.U d'un article dans une liste de 8.640 articles, une modification de prix entraîne une durée de recalcul de +/- 25 secondes pour RECHERCHEV contre +/- 5 secondes pour INDEX EQUIV.

Conclusions

Que ce soit lors de la construction ou la modification du classeur, INDEX EQUIV est fiable à 100% là où RECHERCHEV vous réserve quelques surprises de taille, pas toujours décelables de suite (les résultats sont rarement sur la même feuille que le tableau de données).

Alors, convaincu(e)? Qu'utilisez-vous comme formules pour l'instant? Connaissiez-vous INDEX EQUIV? Voyez-vous les avantages à utiliser ces deux fonctions combinées qui offrent une réelle sécurité sur la vie de votre classeur?

Belle fin d'année et à l'année prochaine pour de nouveaux billets

Une erreur dans cette actualité ? Signalez-nous-la !