Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Jam

XLDnaute Accro
Bonsoir à tous,

J'ai beau chercher sur le net et sur le forum, point de réponse :( donc je pose ma question.
J'ai un tableau avec 3 colonnes:
Borne supérieure; Borne inférieure; Donnée
100;150;toto
151;200;tata
201;250;titi

Dans une cellule j'ai 162. Je cherche une formule qui me permette de renvoyer "tata" puisque ce nombre est compris entre 151 et 200.

J'ai essayé avec SOMMEPROD() sans succès :( Peut-être que je l'ai mal paramétrée.

Je suis donc preneur de toute solution.
Merci d'avance.
 

Jam

XLDnaute Accro
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Salut Victor21,

Ca fonctionne merci.
Par contre j'aimerai rajouter une petite difficulté complémentaire :rolleyes: (j'ai rajouté le petit fichier ;) )

Reprenons l'exemple avec un intervalle manquant

Borne supérieure; Borne inférieure; Donnée

100;150;toto
151;200;tata
251;300;titi

Si j'utilise cette formule, la recherche du nombre 240 va renvoyer titi, alors qu'il ne devrait rien renvoyer parce que n'appartenant à aucun des 3 intervalles.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Test.xlsx
    9.6 KB · Affichages: 30
  • Test.xlsx
    9.6 KB · Affichages: 44
  • Test.xlsx
    9.6 KB · Affichages: 39

Jam

XLDnaute Accro
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Bien essayé Victor21,

Sauf que...j'ai près de 300 intervalles à gérer :( et que tous ne se suivent pas.

Bon je pense que je vais laisser tomber. Je vais gérer à l'ancienne...à la main donc. Première fois qu'Excel me laisse tomber. Pas glop.

A+
 

Dranreb

XLDnaute Barbatruc
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Bonsoir.
Une fonction perso, peut être :
VB:
Function NomTranche(ByVal Arg, ByVal R As Range)
Dim L&
NomTranche = ""
On Error Resume Next
L = WorksheetFunction.Match(Arg, R.Columns(1))
If Err Then Exit Function
If Arg <= R(L, 2) Then NomTranche = R(L, 3)
End Function
En B6 :
Code:
=NomTranche($A6;$A$1:$C$3)
Cela dit je suis assez d'accord avec Victor21: Il vaudrait mieux ne spécifier que des bornes inférieures, même pour des arguments qui ne correspondent à aucune tranche, pour lesquels on mettrait une apostrophe en guise de nom dans la 3ième colonne.
Il serait même souhaitable de commencer par un tel: 0.
 

Jam

XLDnaute Accro
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Merci Bernard pour l'effort,

Mais comme je l'ai dit à Victor21, je laisse tomber ce point.
Je ne peux pas retravailler un fichier de plusieurs centaines d'intervalles à la mimine je manque de temps pour cela.
Je pensais qu'il y avait une solution assez simple, à tord.
Parfois le mieux est l'ennemi du bien.

Merci encore à vous deux et bonne soirée.
 

Dranreb

XLDnaute Barbatruc
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Ma fonction perso travaille néanmoins avec une table sur 3 colonnes. Ne convient-elle pas ?
Si elle ne convient pas et si vous voulez le faire avec des fonctions Excel, il faudrait peu de manœuvres pour convertir votre table à 3 colonnes en table à 2 seulement.
 
Dernière édition:

Jam

XLDnaute Accro
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Bonjour Bernard,

Je viens de tester...bonne idée apparemment :)
Suite aux premières vérifications que j'ai pu effectuer il semblerait que cela soit pas mal du tout.
J'étais plutôt parti sur une solution par formule, cela ne me semblant pas impossible à réaliser, mais ta solution en VBA me convient a priori parfaitement.
Je vais faire encore quelques tests pour m'assurer que les résultats renvoyés sont nickel, voire la modifier afin de gérer les colonnes/décalages qui sont différents par rapport à la matrice de test. Ce point ne sera pas problématique.

Merci d'avoir insisté ;)
 

job75

XLDnaute Barbatruc
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Bonjour Jam, Patrick, Bernard,

Et bien alors les formulistes :confused: Jam a raison ce n'est pas très compliqué.

Formule matricielle en F2, à valider par Ctrl+Maj+Entrée :

Code:
=SI(SOMME((E2>=A2:A4)*(E2<=B2:B4));INDEX(C2:C4;EQUIV(1;(E2>=A2:A4)*(E2<=B2:B4);0));"")
Ou à partir d'Excel 2007 :

Code:
=SIERREUR(INDEX(C2:C4;EQUIV(1;(E2>=A2:A4)*(E2<=B2:B4);0));"")
Fichiers joints.

A+
 

Pièces jointes

  • Intervalles(1).xlsx
    9.6 KB · Affichages: 26
  • Intervalles(1).xls
    24.5 KB · Affichages: 31
Dernière édition:

Jam

XLDnaute Accro
Re : Renvoi d'une valeur d'un tableau en fonction d'un intervalle

Salut Job,

Ah, je me doutais bien qu'on pouvais faire quelque chose de pas trop compliqué pour y arriver !
Après quelques vérifs il semble que ce soit nickel.

Je pense que je vais adopter cette solution.

Merci :D
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 158
Membres
103 139
dernier inscrit
Bidi