[EXCEL] RECHERCHEV intervalle

laurrent-m

Membre actif
7 Juin 2010
324
16
Alsace
Bonjour, j'ai un problème de formules dans excel.

J'ai un tableau sous cette forme

Les données:

N° Valeur Prix
1 ⎢0 à 0,5⎢ 10
2 ⎢0,5 à 1⎢ 15
3 ⎢1 à 2 ⎢ 20
4 ⎢2 à 5 ⎢ 25

L'application:

N° Valeur Prix
1⎢0,4 ⎢10
2⎢0,9 ⎢15
3⎢1,5 ⎢20
4⎢4 ⎢25

Je rentre la "valeur" manuellement et je veux que le prix s'affiche automatiquement. J'ai fait une RECHERCHEV, si je rentre un chiffre rond, comme 0,5 ça marche mais si je note par exemple 0,4 ça ne marche pas. Comment noter une intervalle dans une recherche? Dans les données ?

Merci
 

Aliboron

Chercheur de son
Club iGen
1 Janvier 2008
14 591
1 159
Toulouse.cong
faq.office.macintosh.free.fr
Ça se détermine par le quatrième paramètre transmis à la formule. Regarde dans l'aide pour les détails, pour le moment je ne suis pas en mesure d'en faire plus pour le moment (je réponds sur mon iPhone).
 

laurrent-m

Membre actif
7 Juin 2010
324
16
Alsace
Merci pour votre réponse, mais même en paramétrant la valeur proche je n'y arrive pas. Y a t-il une syntaxe spécial pour noter l'intervalle dans les données ?
 

Aliboron

Chercheur de son
Club iGen
1 Janvier 2008
14 591
1 159
Toulouse.cong
faq.office.macintosh.free.fr
Tu n'as pas dû bien poser les données.

Pour reprendre ton exemple :
- tu mets tes valeurs dans les cellules A2:A5 et le prix en B2:B5
- en D2 tu saisis 0,4
- en E2 tu saisi la formule =RECHERCHEV(D2;A2:B5;2;1)
- le résultat est bien 10 (enfin, chez moi)...
 

laurrent-m

Membre actif
7 Juin 2010
324
16
Alsace
Je peux t'envoyer le fichier? c'est un peu plus compliquer que ça chez moi, tu pourras mieux comprendre

Voila le lien
 
Dernière édition:

zeltron54

Membre expert
Club iGen
29 Mars 2008
2 722
429
Lorraine
Bonjour,

Bien que je trouve tes formules pas optimisées, elles doivent fonctionner. MAIS tu as mal lu l'aide, notamment :
"Si l'argument valeur_cherchée est inférieur à la plus petite valeur de la première colonne de l'argument table_matrice, la fonction RECHERCHEV renvoie la valeur d'erreur #N/A."
Ta matrice de recherche (sur la page tarifs) colissimo commence à 0,5 donc toutes valeurs inférieures à 0,5 donnent #N/A.
Modifie ton tableau de tarifs style:

Colissimo
Poids ---Prix
0 -------5,60 €
0,500 --6,95 €
1,000 --7,95 €
2,000 --8,95 €
3,000 --10,95 €
5,000 --12,95 €
7,000
pour trouver une valeur prix, si le poids est inférieur à 0,500.
Bon courage
 
Dernière édition:

r e m y

Membre vénérable
Club iGen
4 Novembre 2000
41 522
4 325
60
St Germain en Laye - FRANCE
J'essaie de reformuler ta demande pour voir si j'ai bien compris

Ce que tu veux c'est que si on saisi une valeur quelconque, 1,3 par exemple, ça aille comparer cette valeur (1,3) avec le tableau des plages de valeurs pour trouver dans quelle place se situe la valeur (dans mon exemple 1,3, ça doit trouver que cette valeur est dans la plage "1 à 2") et retourner le prix correspondant à cette plage (donc 20 dans mon exemple)

C'est bien ça?

(si c'est ça, pour l'instant je ne sais pas faire.... déjà, je mettrais les bornes inférieures et supérieures des plages dans 2 colonnes différentes, ou mieux, je ne renseignerais que la borne inférieure car on n'a pas besoin de connaitre la borne supérieure, vu que c'est forcément la borne inf. de la plage suivante)

1___0_____10
2___0,5___ 15
3___1_____20
4___2_____25
5___5
 

Pascal 77

ex modéraptor
Club iGen
28 Octobre 2004
44 713
3 606
69
Sous la limite KT
Le problème que tu as, c'est que RechercheV(), avec le 4ème paramètre à 1, renvoie la valeur immédiatement inférieure à celle entrée, donc, si tu entres une valeur inférieure à la première valeur de ta table de références, tu as la réponse "#N/A", forcément puisqu'il n'y a pas de valeur inférieure.

La solution consiste dans tes tables de références à mettre deux colonnes (dont la seconde, "max", n'a pour but que de faciliter la lecture de la table, mais n'est pas utile dans les calculs), et à appliquer le RechercheV sur la première de ces colonnes. Ci dessous, l'exemple avec la table "Colissimo" (la formule pour "colissimo" devenant :"RECHERCHEV(B3;Colissimo;3;1)" :

rechv.jpg

Par contre, pour "lettre max", là, tu as un problème, puisque les deux premières valeurs se comportent comme le reste, mais ensuite, ce sont des codes, donc obligatoirement avec le 4ème paramètre à "0". Tu ne peux pas "mixer", donc, soit tu mets un code aux deux premières valeurs, soit tu indiques des poids pour les trois suivantes
 
Dernière édition:

laurrent-m

Membre actif
7 Juin 2010
324
16
Alsace
Bonjour,

Bien que je trouve tes formules pas optimisées, elles doivent fonctionner. MAIS tu as mal lu l'aide, notamment :
"Si l'argument valeur_cherchée est inférieur à la plus petite valeur de la première colonne de l'argument table_matrice, la fonction RECHERCHEV renvoie la valeur d'erreur #N/A."
Ta matrice de recherche (sur la page tarifs) colissimo commence à 0,5 donc toutes valeurs inférieures à 0,5 donnent #N/A.
Modifie ton tableau de tarifs style:

Colissimo
Poids ---Prix
0 -------5,60 €
0,500 --6,95 €
1,000 --7,95 €
2,000 --8,95 €
3,000 --10,95 €
5,000 --12,95 €
7,000
pour trouver une valeur prix, si le poids est inférieur à 0,500.
Bon courage

Oui elles ne sont pas forcément les meilleures, mais justement avec la RECHERCHEV ça simplifie tout. Parce qu'avec les SI je me suis fais ch** pour rien.


J'essaie de reformuler ta demande pour voir si j'ai bien compris

Ce que tu veux c'est que si on saisi une valeur quelconque, 1,3 par exemple, ça aille comparer cette valeur (1,3) avec le tableau des plages de valeurs pour trouver dans quelle place se situe la valeur (dans mon exemple 1,3, ça doit trouver que cette valeur est dans la plage "1 à 2") et retourner le prix correspondant à cette plage (donc 20 dans mon exemple)

C'est bien ça?

(si c'est ça, pour l'instant je ne sais pas faire.... déjà, je mettrais les bornes inférieures et supérieures des plages dans 2 colonnes différentes, ou mieux, je ne renseignerais que la borne inférieure car on n'a pas besoin de connaitre la borne supérieure, vu que c'est forcément la borne inf. de la plage suivante)

1___0_____10
2___0,5___ 15
3___1_____20
4___2_____25
5___5


Le problème que tu as, c'est que RechercheV(), avec le 4ème paramètre à 1, renvoie la valeur immédiatement inférieure à celle entrée, donc, si tu entres une valeur inférieure à la première valeur de ta table de références, tu as la réponse "#N/A", forcément puisqu'il n'y a pas de valeur inférieure.

La solution consiste dans tes tables de références à mettre deux colonnes (dont la seconde, "max", n'a pour but que de faciliter la lecture de la table, mais n'est pas utile dans les calculs), et à appliquer le RechercheV sur la première de ces colonnes. Ci dessous, l'exemple avec la table "Colissimo" (la formule pour "colissimo" devenant :"RECHERCHEV(B3;Colissimo;3;1)" :

rechv.jpg

Par contre, pour "lettre max", là, tu as un problème, puisque les deux premières valeurs se comportent comme le reste, mais ensuite, ce sont des codes, donc obligatoirement avec le 4ème paramètre à "0". Tu ne peux pas "mixer", donc, soit tu mets un code aux deux premières valeurs, soit tu indiques des poids pour les trois suivantes

C'est bon ça fonctionne en mettant les min dans le tableau, j'ai rajouté une ligne en début de tableau pour que ça n'affiche rien si je renseigne "colissimo" et pas le poids.

Quelles sont toutes les valeurs que peut prendre le 4ème paramètre ?

Pour lettre max ce ne sont que des codes pas de soucis. 20g et 50g sont au même titre que S, M, XL

Merci à vous, ce sera plus simple à réctifier s'il y a un changement de tarif et beaucoup plus clair