Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Je suis à la recherche d'une formule ou fonction qui puisse me donner ceci :

Soit une liste de valeurs numériques (en l'occurrence classées par ordre croissant) qui occupe bien évidemment une plage de cellulles.

Dans une cellule on introduit une valeur quelconque. Cette valeur peut appartenir ou pas à la liste.

Dans une autre cellule apparaîtra le résultat qui sera la valeur dans la liste la plus proche de celle introduite dans la cellule.

Peu importe si la valeur obtenue est plus grande ou plus petite que la valeur introduite. Ce qui compte est tout simplement la valeur la plus proche. Évidemment si la valeur intoduite est inférieure à la plus petite valeur de la liste, le résultat sera la plus petite valeur de la liste ; si la valeur introduite est plus grande que le plus grand résultat de la liste, le résultat sera la plus grande valeur de la liste.
Enfin, "dilemme" : si la valeur introduite se trouve exactement entre 2 valeurs de la liste (Ex. : valeur introduite = 5 , dans la liste on a : 1, 2, 3, 4, 6, 7, 10 ---> 5 est entre 4 et 6), puisque il nous faut une valeur, dans ce cas précis on prendra la supérieure (autrement dit 6 dans l'exemple).

J'ai bien cherché dans la BD du forum, mais n'ai rien trouvé qui satisfasse ces conditions.

Merci pour m'aider à résoudre ce problème.
 
Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Bonjour le Forum,
Bonjour Magic_Doctor,

En pièce un essai si j'ais bien compris les données sont dans la colonne A le numéro à rechercher en C1 la formule en D12

La formule en D12 est une formule matricielle à valider en appuyant simultanément sur les touche CTRL, Majuscule (au dessus de CTRL) et entrée

Si la formule est bien validée les signes {et} apparaissent devant le signe égal et a la fin de la formule

regardes et dis nous

Jocelyn
 

Pièces jointes

Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Bonsoir, ou peut-être bonjour (décalage...), Jocelyn & ow031,

La formule est presque parfaite mais, comme l'a signalé ow031, certaine valeurs ne collent pas.

En tout cas, grace à toi, on commence à s'approcher de la solution.
 
Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Rebonjour,

L'algorithme de Jocelyn marche très bien, si ce n'est que lorsque l'on met une valeur qui se trouve déjà dans la colonne de valeurs, le résultat est la valeur précédente et non la valeur elle-même.
Une petite correction "pitécanthropienne" résoud le problème.

Si d'aventure l'un d'entre vous trouvait une solution plus rafinée...
 

Pièces jointes

Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Bonjour Doctor, salut Jocelyn,

Un essai avec :

Code:
=INDEX($B$3:$B$95;EQUIV(MIN(SI(ESTNUM($B$3:$B$95);
ABS($D$3-$B$3:$B$95)));ABS($D$3-$B$3:$B$95);0))

Matricielle donc validation par CTRL + MAJ + ENTREE

@+
 
Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

Bonjour Tibo,

Bravo, ça a l'air de marcher parfaitement. Quand la valeur qui doit être comparée se situe exactement entre 2 valeurs contiguës de la colonne de valeurs (7 avec 6 et 8 par exemple), on obtient comme résultat la valeur inférieure et non pas la supérieure. En fait, personnellement, cela n'a aucune importance, puisqu'il faut une valeur !

Ta formule est un paradigme (mot très utilisé sous mes latitudes, incompréhensible dans n'importe quel dictionnaire français...) d'élégance dans la concision.

¡Feliz día!
 
Re : Valeur la plus proche dans une liste de valeurs d'une valeur donnée

re,

Histoire de compléter :

Quand la valeur se trouve exactement entre deux valeurs :

Pour prendre en compte la valeur supérieure :

Code:
=INDEX($B$3:$B$83;EQUIV(MIN(SI(ESTNUM($B$3:$B$83);
ABS($D$3[COLOR=red]+0.01[/COLOR]-$B$3:$B$83)));ABS($D$3[COLOR=red]+0.01[/COLOR]-$B$3:$B$83);0))

Toujours matricielle, donc CTRL + MAJ + ENTREE


Je n'ai pas trop testé, à prendre donc avec prudence ou bien à tester en grand

@+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
528
Retour