[VBA] se référer à l'un des intervalles dans une cellulle

Bonjour,

Je souhaite savoir s’il est possible de se référer à une valeur comprise dans un intervalle dans une cellule qui comprend plusieurs intervalle.

Concrètement, voici la tête de ma cellule

intervallejpg

Je voudrais indiquer à VBA que lorsque ma valeur retenue est par exemple de 55, il faut se référer au taux relatif à l’intervalle correspondant. Ici, l'intervalle adéquat est [33-66], et le taux correspondant à cet intervalle est de 0,20%. Chaque couple intervalle - taux est séparé par un point virgule pour éviter les confusions.

Autrement dit :

intervallejpg

Merci en avance pour votre aide

Bonjour,

Pourquoi ne pas partir sur quelque chose d'ultra simple comme sur le fichier joint ?

7thibier.xlsx (9.26 Ko)

Merci pour ta réponse.

Le problème c'est que je ne peux pas m'étaler sur plusieurs cellules.

Tes critères de base ne doivent se trouver que sur une seule cellule ?

Pas très pratique ...

Il faut effectivement soit passer par du VBA, soit jouer avec la fonction stxt pour retirer les valeurs de tes intervalles, ce qui n'est pas une très bonne solution.

Et question VBA, je ne vais pas pouvoir t'aider, désolé.

Bonjour,

avec une fonction personnalisée :

Function tauxInterval(valeur As Double, interval As String)
    Dim tmp1, tmp2, tmp3
    Dim i As Long
    tmp1 = Split(interval, ";")
    For i = UBound(tmp1) To 0 Step -1
        tmp2 = Split(tmp1(i), " ")
        tmp2(0) = Replace(Replace(tmp2(0), "[", ""), "]", "")
        tmp3 = Split(tmp2(0), "-")
        If valeur > tmp3(0) And valeur <= tmp3(1) Then tauxInterval = tmp2(1): Exit For
    Next i
End Function

J'ai considéré que les intervalles étaient toujours du type ]...], sinon il faudra compléter.

eric

11classeur4.xlsm (18.06 Ko)

Waaa merci je regarde ça immédiatement.

J'adore.

Ok j'ai pigé l'astuce.

Ca m'a pris du temps mais c'est good.

Extrêmement brillant, tu as mis quelques minutes à faire ça c'est remarquable.

Merci à toi.

Sujet résolu.

Je reviens vous

La formule marche parfaitement. Cependant je voudrais ajouter une condition : une fois qu'on a notre taux interval, je souhaite faire un check sur des cellules. En dernière ligne, vous aurez la nouvelle ligne que j'ai ajouté

If valeur.Offset(0, -3) > valeur.Offset(1, -4) And Not valeur.Offset(1, -4) Is Nothing Then tauxInterval = "pas bon"

Function tauxInterval(valeur As Double, interval As String)

    Dim tmp1, tmp2, tmp3
    Dim i As Long
    tmp1 = Split(interval, ";")
    For i = UBound(tmp1) To 0 Step -1
        tmp2 = Split(tmp1(i), " ")
        tmp2(0) = Replace(Replace(tmp2(0), "[", ""), "]", "")
        tmp3 = Split(tmp2(0), "-")

        If valeur > tmp3(0) And valeur <= tmp3(1) Then tauxInterval = tmp2(1): Exit For

    Next i

If valeur.Offset(0, -3) > valeur.Offset(1, -4) And Not valeur.Offset(1, -4) Is Nothing Then tauxInterval = "pas bon" 

End Function

Le problème c'est que offset ne s'applique pas à une cellule. "Valeur" n'est pas une cellule mais bien une valeur donc offset ne fonctionne pas. Auriez vous une alternative ?

Cdt

Bonjour,

Function tauxInterval(valeur As Range, interval As String)

Mais tant qu'à faire autant mettre le test avant de calculer :

If valeur.Offset(0, -3) > valeur.Offset(1, -4) And Not valeur.Offset(1, -4) Is Nothing Then 
tauxInterval = "pas bon" 
else
...

eric

Rechercher des sujets similaires à "vba referer intervalles cellulle"