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

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
gaelec
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 12 févr. 2014 18:55

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

Message 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.
Pièces jointes
trouver valeur la plus proche.ods
determiner la valeur la cellule contenant la valeur la plus proche
(11.21 Kio) Téléchargé 121 fois
*libre officce 7.0.6 (x64) sous Windows 10 (64)
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5732
Inscription : 03 janv. 2009 00:56

Re: rechercher valeur la plus proche dans une colonne

Message 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
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 15:31

Re: rechercher valeur la plus proche dans une colonne

Message 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+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
gaelec
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 12 févr. 2014 18:55

Re: rechercher valeur la plus proche dans une colonne

Message 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 ?
*libre officce 7.0.6 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 12 févr. 2014 18:55

Re: rechercher valeur la plus proche dans une colonne

Message 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...
*libre officce 7.0.6 (x64) sous Windows 10 (64)
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 5732
Inscription : 03 janv. 2009 00:56

Re: rechercher valeur la plus proche dans une colonne

Message 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
Pièces jointes
gaelec_20200507_JLC01.ods
(15.06 Kio) Téléchargé 107 fois
LibO 7.6.5.2 (x64 avec Java 1.8.0_401) et AOO 4.1.15 (avec Java x32 1.8.0_381), Windows 7 Édition Intégrale 64 SP1
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9223
Inscription : 28 août 2010 10:45

Re: rechercher valeur la plus proche dans une colonne

Message 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,
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Verrouillé