[EXCEL] RECHERCHEV intervalle

laurrent-m

Membre actif
7 Juin 2010
321
14
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
Modérateur
Club MacG
1 Janvier 2008
14 161
1 029
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
321
14
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
Modérateur
Club MacG
1 Janvier 2008
14 161
1 029
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
321
14
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 MacG
29 Mars 2008
2 220
346
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 MacG
4 Novembre 2000
41 519
4 322
59
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 MacG
28 Octobre 2004
44 549
3 553
68
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
321
14
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