Page 1 sur 1

[Résolu] rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 18:04
par gaelec
Bonjour,

Voici mon problème:
J'ai une première colonne contenant une série de nombre correspondant à un age (0an ,5ans, 10ans 15ans...)
En fonction de l'age, un type de matériel correspond (a, b,c,...)

A partir d'une formule d'une autre cellule me donnant un age, je souhaite faire correspondre le type de matériel, à l'age le plus proche correspondant à ceux proposés en colonne A

J'ai pas mal cherché en vain:
La fonction recherche ou recherche V ou equiv et index me donne la cellule correspondante à l'âge exact ou immédiatement inférieur. :? :? :?
Or ce que je veux c'est l'age le plus proche.
Exemple si l'age est
de 6 ans ==> matériel b (cela fonction avec recherche V)
de 9 ans ==> matériel c

petit tableau en PJ
Je n'arrive pas a combiner les focntions pour trouver la bonne formule...

Merci de vote aide.

Re: rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 18:47
par Jean-Louis Cadeillan
Bonjour,
Au lieu d'utiliser les âges donnés, tu utilises les âges intermédiaires (0 ; 2,5 ; 7,5 ; 12,5) , ce qui peut donner en E2 :

Code : Tout sélectionner

=INDEX($B$9:$B$12;EQUIV(C2;SIERREUR(($A$8:$A$11+$A$9:$A$12)/2;0);1))
Cordialement,
Jean-Louis

Re: rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 21:49
par OOotremer971
Bonjour,

Juste pour le fun, une variante avec ARRONDI.AU.MULTIPLE():

Code : Tout sélectionner

=RECHERCHEV(ARRONDI.AU.MULTIPLE(C2;5);$A$9:$B$12;2;0)
ARRONDI.AU.MULTIPLE() arrondi une valeur au multiple déterminé le plus proche (en l'occurrence 5) :
Arrondi.png
A+

Re: rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 22:12
par gaelec
Jean-Louis Cadeillan a écrit :Bonjour,
Au lieu d'utiliser les âges donnés, tu utilises les âges intermédiaires (0 ; 2,5 ; 7,5 ; 12,5) , ce qui peut donner en E2 :

Code : Tout sélectionner

=INDEX($B$9:$B$12;EQUIV(C2;SIERREUR(($A$8:$A$11+$A$9:$A$12)/2;0);1))
Cordialement,
Jean-Louis
Merci de cette proposition.
Je souhaiterai comprendre la logique de la formule (je dois la reproduire dans une feuille plus complexe)
Si j'essaye de retranscrire littéralement la formule elle "dit":
"Dans la reference (B9:B12) -c'est a dire la colonne dans laquelle le choix doit etre fait), reporter la cellule definie par:
N°ligne= EQUIV (=rechercher la position de la valeur C2; dans la plage ????; trouver la valeur exacte)
N° colonne: 1
==> je ne comprend pas le choix dans la fonction equiv du dernier argument (0) car cela demande la "valeur exacte". Je me doute qu'il doit y avoir un lien avec la fonction "sierreur" mais je ne saisie pas..
==> Dans la fonction "sierreur", a quoi correspond "l'addition" des 2 palges A8:A11 et A9:A12 ?

Re: rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 22:16
par gaelec
OOotremer971 a écrit :Bonjour,

Juste pour le fun, une variante avec ARRONDI.AU.MULTIPLE():

Code : Tout sélectionner

=RECHERCHEV(ARRONDI.AU.MULTIPLE(C2;5);$A$9:$B$12;2;0)
ARRONDI.AU.MULTIPLE() arrondi une valeur au multiple déterminé le plus proche (en l'occurrence 5) :
Arrondi.png
A+
Bonsoir merci pour cette proposition mais j'ai mis des chiffres dans la colonne A pour une comprehension simple. En réalité il n'y a pas de multiplicateur possible.
La vrai suite de chiffre de la colonne A est :
0
180
365
1095
1826
2922
3652
Je n'aurais pas du simplifier autant le classeur...

Re: rechercher valeur la plus proche dans une colonne

Publié : 07 mai 2020 23:00
par Jean-Louis Cadeillan
gaelec a écrit :dans la plage ????
Pour bien comprendre ce qui se passe, place dans une cellule quelconque (avec de la place en dessous) :

Code : Tout sélectionner

=($A$8:$A$11+$A$9:$A$12)/2
et valide matriciellement par Maj+Ctrl+Entrée : cette formule va te retourner une plage de cellules avec comme valeurs les valeurs intermédiaires (des « milieux ») de A9:A12, avec une erreur en première position, puisque A8 ne contient pas un nombre mais un texte, c'est pour cela que j'ai ajouté SIERREUR() :

Code : Tout sélectionner

SIERREUR(($A$8:$A$11+$A$9:$A$12)/2;0)
En réponse à cette erreur, je mets 0, car le premier choix, 0, divisé par deux, vaut toujours zéro. Si c'était une autre valeur que 0, on pourrait généraliser par :

Code : Tout sélectionner

SIERREUR(($A$8:$A$11+$A$9:$A$12)/2;$A$8/2)
gaelec a écrit :Je ne comprends pas le choix dans la fonction equiv du dernier argument (0) car cela demande la "valeur exacte".
Relis mieux la formule, tu verras que le zéro est le dernier argument de SIERREUR() comme expliqué ci-dessus. Le dernier argument de EQUIV est 1.
gaelec a écrit : Dans la fonction "sierreur", à quoi correspond "l'addition" des 2 plages A8:A11 et A9:A12 ?
Non seulement je les additionne, mais je divise par 2. La valeur intermédiaire de 5 et 10, c'est (5+10)/2, c'est la valeur moyenne à égale distance des deux nombres. L'expression

Code : Tout sélectionner

=($A$8:$A$11+$A$9:$A$12)/2
fait exactement la même chose, mais sur toutes les valeurs à la fois, comme expliqué plus haut.
Ci-joint la mise en œuvre avec ton nouveau barème.
Cordialement,
Jean-Louis

Re: rechercher valeur la plus proche dans une colonne

Publié : 11 juin 2020 09:48
par micmac
Bonjour,

Dernière connexion le : 17 Mai 2020 10:29
Plus de 20 jours plus tard, vous avez lu les réponses apportées sans daigner y donner suite.
La politesse fait aussi partie de la philosophie du logiciel libre.
En l'absence de retour, nous considérons votre problème comme résolu.
Veillez à le faire par vous-même la prochaine fois.

Cordialement,