Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[Résolu] Aide fonction INDEX/EQUIV

Max60150

XLDnaute Junior
Bonjour le forum !

Me revoilà pour un petit problème qui j'en suis sure ne vous occupera pas longtemps mais c'est un casse tête pour moi.
J'utilise plusieurs tableaux, et je récupère des valeurs à l'intérieur grâce aux fonctions INDEX et EQUIV.
J'ai mis un petit moment à maîtriser la chose, mais je m'en sors pas mal.
BREF !

J'ai fais une petite feuille pour illustrer ma demande, il vaut surement mieux l'ouvrir avant de lire la suite, pour comprendre ce que je raconte !

J'entre une valeur comprise entre 0 et 4 dans une cellule.
Grâce à un INDEX/EQUIV je situe ma valeur sur une plage "graduée", me permettant dans mon propre programme de récuperer la ligne sur laquelle je vais travailler dans mon tableau.

Ce que je voudrais, c'est que mon INDEX/EQUIV ne se cantonne pas à prendre soit la valeur supérieure, soit la valeur inférieure, mais la valeur la plus proche. Je m'explique:

Supposons que j'entre comme valeur 0,23.
J'aimerai que le programme me retourne la ligne 0,20 - donc la valeur inférieur.
Jusque là pas de soucis.
Maintenant si j'entre 0,38.
J'aimerai que le programme me retourne la ligne 0,40 - donc la valeur supérieur.
C'est là qu'est mon soucis, je n'ai pas réussi à bidouiller pour que mon code alterne entre choisir la valeur inférieur et supérieur à celle que j'entre à la main.
J'avais bien une idée pour bidouiller quelque chose, mais, petite difficulté supplémentaire, la "graduation" de ma plage de valeurs n'est pas constante..

J'espère que je suis clair, sinon je suis dispo pour les questions !

Merci d'avance
 

Pièces jointes

  • XLD_INDEXEQUIV.xlsx
    8.9 KB · Affichages: 31
Dernière édition:

VDAVID

XLDnaute Impliqué
Re : Aide fonction INDEX/EQUIV

Bonjour Max60150,

Pas évident, mais en passant par une matricielle ça semble fonctionner:


=SI(ESTERREUR(EQUIV(PETITE.VALEUR(ABS(C9:C22-D5);1)+D5;C9:C22;0))=VRAI;D5-PETITE.VALEUR(ABS(C9:C22-D5);1);PETITE.VALEUR(ABS(C9:C22-D5);1)+D5)

Si tu as des questions n'hésite pas
Il faut que tu valides la formule en faisant Ctrl + MAJ + ENTREE

Bonne journée !
 

Max60150

XLDnaute Junior
Re : Aide fonction INDEX/EQUIV

Bonjour VDAVID, et merci

Elle m'a l'air bien casse tête, mais elle fonctionne cette formule !
Je me pencherai dessus demain pour l'appliquer à mon programme, je pense que je n'aurais pas assez de la fin d'après midi pour bien comprendre et l'appliquer là ou j'en ai besoin haha !

Je laisse le topic ouvert au cas ou j'aurais des soucis demain.

Merci encore,

Bonne fin de journée.
 

slaurent01

XLDnaute Junior
Re : Aide fonction INDEX/EQUIV

Bonjour le forum,


Bonjour max60150,

En D7 :
Code:
=INDEX(C9:C22;EQUIV(MIN(ABS(D5-C9:C22));ABS(D5-C9:C22);0))
En validant avec CTRL+maj+entrée
(formule provenant du site Developpez.net)

Cordialement
stéphane
 

Max60150

XLDnaute Junior
Re : Aide fonction INDEX/EQUIV

Bonjour le forum, et merci pour votre aide !
J'ai intégré le code à mon programme, sa fonctionne super bien, impeccable

J'en ai profité pour me rencarder un peu sur les formules matricielles. Bien maîtriser sa doit simplifier la vie !

Merci encore en tout cas, bonne journée le forum.
 

R@chid

XLDnaute Barbatruc
Re : [Résolu] Aide fonction INDEX/EQUIV

Bonjour @ tous,
Si D3=0,3 que veux-tu obtenir comme résultat 0,2 ou bien 0,4 ???

Pour gérer le cas :
Code:
=MIN(SI(MIN(ABS(D5-C9:C22))=ABS(D5-C9:C22);C9:C22))
ou,
Code:
=MAX(SI(MIN(ABS(D5-C9:C22))=ABS(D5-C9:C22);C9:C22))

Toujours matricielles

@ + +
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…