John a une table de recherche de valeurs numériques croissantes dans la colonne A et des valeurs de texte correspondantes dans la colonne B. Lorsqu’il utilise la fonction RECHERCHEV, elle renvoie la valeur de texte pour la valeur numérique égale ou inférieure à la valeur de recherche spécifiée. John veut vraiment que la première valeur soit égale ou supérieure à la valeur de recherche.

Il n’y a aucun moyen de changer la façon dont VLOOKUP effectue son travail; il correspondra toujours à la valeur égale ou inférieure à la valeur de recherche. Une option, cependant, est de modifier la formule utilisée pour effectuer la recherche réelle. Considérez la formule suivante, qui suppose que la valeur que vous souhaitez utiliser pour votre recherche se trouve dans la cellule D1:

=IF(VLOOKUP(D1,$A$1:$A$10,1)=D1,VLOOKUP(D1,$A$1:$B$10,2), INDEX($B$1:$B$10,1+MATCH(D1,$A$1:$A$10)))

Si la valeur de D1 correspond exactement à une valeur de la colonne A, la formule VLOOKUP standard est utilisée. Si ce n’est pas le cas, VLOOKUP est abandonné au profit de la fonction INDEX en conjonction avec la fonction MATCH.

Si vous pouvez trier votre tableau de données par ordre décroissant, vous pouvez utiliser une formule plus courte:

=INDEX($A$1:$B$10,MATCH(D1,$A$1:$A$10,-1),2)

La fonction MATCH utilise la valeur D1 pour rechercher la plus petite valeur supérieure ou égale à cette valeur. (C’est ce que spécifie le paramètre -1.) La fonction MATCH renvoie le numéro de ligne de la ligne appropriée, puis il est utilisé par INDEX pour récupérer réellement la valeur.

Une autre approche intéressante du problème consiste à utiliser l’inverse des valeurs de recherche comme colonne de contrôle qui sera utilisée pour rechercher réellement des informations dans la table de données. Par exemple, supposons que votre table de données soit en A1: B10, avec les valeurs numériques réelles que vous utilisez pour la recherche dans la colonne A. Vous devez insérer une colonne à gauche de votre table de données. Dans la première cellule de cette nouvelle colonne (maintenant la colonne A), insérez la formule suivante:

=1/B1

Cela fournit l’inverse de la valeur de B1 et vous pouvez le copier dans les cellules de la colonne A. Votre tableau de données comporte désormais trois colonnes, A1: C10.

Ensuite, triez votre table de données en fonction de cette nouvelle colonne, par ordre croissant.

Maintenant, vous apportez une légère modification à votre formule de recherche afin qu’elle recherche l’inverse de ce que vous voulez. En supposant que la valeur que vous souhaitez utiliser pour votre recherche se trouve dans la cellule E1, vous utiliseriez la formule suivante:

=VLOOKUP(1/E1,$A$1:$C$10,3)

En fait, vous obtenez la valeur souhaitée, de la colonne C, qui est associée à la valeur de la colonne B qui est égale ou inférieure à la valeur de E1.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3090) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.