Valeur "la plus grande inférieure à" dans une matrice variable

Bonjour à toutes et tous,

Voici le problème auquel je suis confronté : Je dispose d'un tableau indiquant, pour une série de produits, les seuils quantitatifs à atteindre pour obtenir une remise.

J'aimerais, pour un produit donné, et une quantité donnée, connaitre le seuil atteint.

image

Dans l'exemple ci-dessus :

- Je vends 2 de A, je n'atteins pas le premier seuil, résultat : 0
- Je vends 5 de A, j'atteins le premier seuil, résultat : 1
- Etc.

J'aimerais éviter les SI() imbriqués avec de multiples RECHERCHEV().
J'aimerais aussi éviter les formules matricielles, que je ne maitrise pas.
Idéalement, je ne dois pas avoir recours à du VBA non plus.

Bien sûr, je reste ouvert à toute solution proposée, mais une petite formule bien ficelée, pas trop indigeste serait parfait

Je vous remercie d'avance pour vos conseils.

Bien à vous,

Bonjour à tous !

Une proposition ?

Bonjour JFL,

Ca a l'air de fonctionner très bien.

J'ai jeté un oeil à ta formule et je dois avouer ne pas en avoir saisi toutes les subtilités encore, mais je vais m'y atteler. Je te reviens au besoin.

Merci :)

bonjour

une autre proposition (en vert)

cordialement

11catab.xlsx (12.52 Ko)

Comme le dirait de Gaulle : "Je vous ai compris".

Bien vu le EQUIV(). Je ne l'exploite pas assez souvent. J'ignorais que le [type] par défaut permettait de chercher la valeur la plus élevée inférieure ou égale à la valeur cherchée. Coupler à DECALER() pour adapter la matrice de recherche, c'est du génie.

Et bien je pense qu'on peut considérer le problème comme résolu.

Je te remercie.

Tulipe,

Merci pour la contribution. Il s'agit d'une formule matricielle comme je comprends. (un simple ENTER tombe en erreur et renvoie 0).

Mais ça semble fonctionner également.

Je vais m'en tenir à la formule de JFL cependant :)

Bonne journée,

Bonjour de nouveau !

Je vous remercie de ce retour...enthousiaste !

Bonjour à toutes et tous,

Je me permets de rouvrir ce sujet car j'ai de nouveaux éléments qui viennent un petit peu corcer le problème.

Deux éléments pour être exact :

Tout d'abord, les produits n'ont pas tous un seuil quantitatif leur permettant d'aller jusqu'à la remise maximum.
C'est le cas de l'article B dans mon nouvel exemple, qui n'a que 3 des 4 seuils. L'article ne pourra donc jamais dépassé 15% de remise.

Ensuite, certains produits "sautent" certains seuils quantitatifs.
C'est le cas de l'article C dans mon exemple. A 20 unités, on atteint le seuil de la remise 1, et à 60 unités, celui de la remise 3. Mais entre 20 et 60, on aura jamais la remise 2.

exemple

Le premier problème, je l'ai résolu. Il suffisait de réduire la taille de la zone dans laquelle on fait notre EQUIV, grâce à l'argument [largeur] de la fonction DECALER en fonction de la position de l'élément le plus grand de cette zone. (Waouw, en me relisant c'est du chinois... N'hésitez pas à vous y prendre à deux fois, avec le tableau sous les yeux )
En terme Excel, dans l'exemple, c'est ce qu'on trouve dans la colonne MAX que j'ai intégré dans la formule dans la colonne Result (S).

Ainsi, à la ligne 13, avec 150 unités de B, on est limité au seuil maximum de B, càd 3.

Là où je sèche, c'est pour "omettre" les "seuils à 0" entre deux autres seuils.
Voyez la ligne 14, avec 30 unités de C. J'atteins le seuil 1, mais pas le 3. Il n'y a pas de seuil 2. Mais ma formule, elle, me donne le seuil 2.

Amateurs de casse-tête, bon amusement... Et d'ores et déjà merci.

Bonjour à tous !

Une proposition ?

Excellent ! Retirer les 0 par des cellules vides résolvaient le problème, tout simplement. La formule INDEX est même de l'overkill il me semble.

Par contre, mon tableau de seuils quantitatifs est le résultat d'une extraction en BDD. Donc remplacer les 0 par des NULL n'est pas si anodin, puisqu'il est destiné à être mis à jour... Mais ça doit pouvoir se faire en SQL. Je ne m'en fais pas trop pour ça.

Encore une fois merci JFL.

Bonjour à tous de nouveau !

Bien....

Ne pas oublier de passer le sujet en mode résolu !

Rechercher des sujets similaires à "valeur grande inferieure matrice variable"