[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.

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

Messagepar gaelec » 07 Mai 2020 17:04

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é 49 fois
*libre officce 6.3.5.2 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 14
Inscrit le : 12 Fév 2014 18:55

Re: rechercher valeur la plus proche dans une colonne

Messagepar Jean-Louis Cadeillan » 07 Mai 2020 17:47

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   AgrandirRéduire
=INDEX($B$9:$B$12;EQUIV(C2;SIERREUR(($A$8:$A$11+$A$9:$A$12)/2;0);1))
Cordialement,
Jean-Louis
LibO 7.0.4.2 (x64 avec Java 1.8.0_281) et AOO 4.1.9 (avec Java x32 1.8.0_241), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5049
Inscrit le : 03 Jan 2009 00:56

Re: rechercher valeur la plus proche dans une colonne

Messagepar OOotremer971 » 07 Mai 2020 20:49

Bonjour,

Juste pour le fun, une variante avec ARRONDI.AU.MULTIPLE():
Code : Tout sélectionner   AgrandirRéduire
=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
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
 
Message(s) : 2503
Inscrit le : 16 Avr 2010 14:31

Re: rechercher valeur la plus proche dans une colonne

Messagepar gaelec » 07 Mai 2020 21:12

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   AgrandirRéduire
=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 6.3.5.2 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 14
Inscrit le : 12 Fév 2014 18:55

Re: rechercher valeur la plus proche dans une colonne

Messagepar gaelec » 07 Mai 2020 21:16

OOotremer971 a écrit:Bonjour,

Juste pour le fun, une variante avec ARRONDI.AU.MULTIPLE():
Code : Tout sélectionner   AgrandirRéduire
=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 6.3.5.2 (x64) sous Windows 10 (64)
gaelec
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 14
Inscrit le : 12 Fév 2014 18:55

Re: rechercher valeur la plus proche dans une colonne

Messagepar Jean-Louis Cadeillan » 07 Mai 2020 22:00

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   AgrandirRéduire
=($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   AgrandirRéduire
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   AgrandirRéduire
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   AgrandirRéduire
=($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é 49 fois
LibO 7.0.4.2 (x64 avec Java 1.8.0_281) et AOO 4.1.9 (avec Java x32 1.8.0_241), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5049
Inscrit le : 03 Jan 2009 00:56

Re: rechercher valeur la plus proche dans une colonne

Messagepar micmac » 11 Juin 2020 08:48

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,
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 7329
Inscrit le : 28 Août 2010 09:45


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : njhub et 4 invité(s)