Pour optimiser les performances de calcul d’Excel, il faut choisir la fonction Excel la plus efficiente, c’est à dire celle qui donnera le résultat voulu en nécessitant le moins de moyens (en termes de ressources de calculs et de mémoire). Dans cette optique, il est préférable d’utiliser tant que possible la fonction RECHERCHEV() plutôt que la fonction INDEX() combinée à EQUIV().
La fonction RECHERCHEV() est optimisée pour renvoyer une valeur d’un autre tableau. Pour profiter de ces bénéfices, il est conseillé de mettre VRAI à l’argument « valeur proche ». Cela permet à Excel d’être plus rapide. Et pour faciliter le travail d’Excel, on peut aussi trier les données relatives aux références par ordre croissant.
Le seul désavantage de cette astuce est le fait que la fonction renvoie la valeur la plus proche si la référence n’est pas trouvée. Cependant, si on a ce cas, on peut contourner ce problème en utilisant la fonction SI() et NB.SI() pour préciser que si la valeur recherchée n’existe pas, on peut mettre « pas trouvée ».
Pour renvoyer une valeur d’un tableau, il est aussi possible d’utiliser la fonction SOMMEPROD(). Cependant cette fonction n’est pas optimisée pour cette tâche, sa principale utilité étant le dénombrement. Il est donc préférable d’utiliser la fonction RECHERCHEV() en utilisant la fonction CONCATENER() pour faire une recherche avec plusieurs critères.
Et si possible, il est plus efficace de rechercher les références dans un tableau plus petit. Ainsi, l’utilisation de sous-ensembles peut être utile : par exemple en recherchant la première et la dernière ligne pour le pays, puis en recherchant le produit dans ce sous-ensemble
Pour + d’infos :
– Test des différentes fonctions pour le renvoi de valeur d’un tableau
3 commentaires sur “Pourquoi utiliser la fonction RECHERCHEV à la place de INDEX ?”
Cas1:
Si la valeur cherchée est un code et si la table est TRIEE, on peut spécifier le paramètre VRAI.
La recherche est alors faite par DICHOTOMIE et peut être x100 + RAPIDE puisqu’il suffit de quelques
accés pour retrouver le code. C’est TRES IMPORTANT lorsque la table est de taille importante et que
la formule Recherchev() est recopiée x1000 fois (Avec FAUX , Excel consulte la table SEQUENTIELLEMENT).
Pour vérifier si le code existe (on ne récupère pas #N/A mais la valeur inférieure), il faut écrire:
=SI(RECHERCHEV(CodeCherché;Articles;1;VRAI)=
CodeCherché;RECHERCHEV(CodeCherché;Articles;2;VRAI); »Inconnu »)
Cas2:une fonction recherchev() est recopiée x1000 fois
On peut utiliser une fonction perso matricielle (x10 fois + rapide)
http://boisgontierjacques.free.fr/pages_site/recherchev.htm#FonctionRechVM
Bonjour,
Pour différentes raisons à mon humble avis il y aurait des raisons à préfèrer l’inverse,
mieux qu’un long discours.
http://www.excelabo.net/excel/recherche_index_equiv
Cordialement.
—
LSteph
Bonjour Stephane,
Oui, la fonction INDEX() combinée à EQUIV() permet de répondre à des besoins spécifiques (auxquels la fonction RECHERCHEV() ne conviendrait pas si une structure spécifique du fichier et des données n’a pas été mise en place)
Mais en termes de performances,
c’est à dire en termes de ressources de l’ordinateur sollicitées pour avoir le résultat,
la fonction RECHERCHEV() est beaucoup plus économe,
ce qui représente un avantage non négligeable lorsque le fichier est amené à évoluer et à contenir de grandes quantités de données (il y a un risque d’avoir à tout restructurer/optimiser quand il y aura trop de données, pour continuer à utiliser le fichier. Si possible il est préférable d’anticiper cela).
Dans cette optique,
il est préférable de bien structurer le fichier et les données,
pour pouvoir utiliser la fonction RECHERCHEV(),
qui permettra d’avoir un fichier dont les calculs seront plus rapide car économes en ressources.