OVH Cloud OVH Cloud

rechercher une valeur en VBA

2 réponses
Avatar
bourby
bonjour,

en VBA, comment trouver dans une plage, rangée par ordre croissant, la
dernière valeur inférieure à un nombre (réel)?

Je ne veux/peux pas employer evaluate + les fonctions Excel, parce que
le nom de ma plage est une variable VBA du genre strPlage(i), donc pas
reconnue dans Excel.

D'avance merci.

Bourby

2 réponses

Avatar
isabelle
bonjour bourby,

=INDEX(plg;EQUIV(valeur;plg;1)-1)

On Error Resume Next
Set t = Rows(Application.Match(strPlage(i), [plg], 0))
If t <> Empty Then
x = Application.Index([plg], Application.Match(strPlage(i), [plg], 1) - 1)
Else
x = Application.Index([plg], Application.Match(strPlage(i), [plg], 1))
End If

isabelle


bonjour,

en VBA, comment trouver dans une plage, rangée par ordre croissant, la
dernière valeur inférieure à un nombre (réel)?

Je ne veux/peux pas employer evaluate + les fonctions Excel, parce que
le nom de ma plage est une variable VBA du genre strPlage(i), donc pas
reconnue dans Excel.

D'avance merci.

Bourby


Avatar
bourby
isabelle wrote:
bonjour bourby,

=INDEX(plg;EQUIV(valeur;plg;1)-1)

On Error Resume Next
Set t = Rows(Application.Match(strPlage(i), [plg], 0))
If t <> Empty Then
x = Application.Index([plg], Application.Match(strPlage(i), [plg], 1) - 1)
Else
x = Application.Index([plg], Application.Match(strPlage(i), [plg], 1))
End If

isabelle


bonjour,

en VBA, comment trouver dans une plage, rangée par ordre croissant, la
dernière valeur inférieure à un nombre (réel)?

Je ne veux/peux pas employer evaluate + les fonctions Excel, parce que
le nom de ma plage est une variable VBA du genre strPlage(i), donc pas
reconnue dans Excel.

D'avance merci.

Bourby




Bonjour Isabelle et merci pour ton aide.

Tu m'as mis sur la bonne voie; j'ai un peu modifié ton code, pour
récupérer le rang de la valeur dans la plage:

Sub trouver()
strplage = Array("maPlage1", "maPlage2")
monRéel = 3.35
On Error Resume Next
For i = LBound(strplage) To UBound(strplage)
t = Application.Match(monRéel, Range(strplage(i)), 1)
MsgBox i & " " & t
Next i
End Sub


Cordialement

Bourby