Bonjour a tous , je dispose de 2 fonctions FIndAsk et FindBid qui me donne le bid et le ask d un produit financier
autrement pour un produit (chaine de caractere): "2m10y 100wc 245/123"
le bid est le chiffre a gauche du /
le ask celui situe a droite du /
J aimerais savoir comment ameliorer mes fonctions pour rendre le chiffre situe exactement a droite ou a gauche du / et dans le cas ou il n y en a pas de rien renvoyer .Exemples ou mes fonctions ne marchent pas
1) "2m10y 123/" (dans ce cas je ne renvoie que le bid (pas de ask))
2) "2m10y @147 /145" (la on remarque que je n ai que le ask , pas de bid )
ps le bid et le ask ne st jamais separe par un espace siils existent.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function FindBid(code As String) As Variant
Dim pos1 As Integer
If code Like ("*/*") Then
pos1 = InStr(code, "/")
FindBid = RightNum(Mid(code, Len(FindDates(code)), pos1 - Len(FindDates(code))))
Else
FindBid = ""
End If
End Function
 
 
 
Function FindAsk(code As String) As Variant
 Dim pos As Integer
 If code Like ("*/*") Then
   pos = InStr(code, "/")
 FindAsk = RightNum(Mid(code, pos))
Else: FindAsk = ""
End If
 
End Function
ma fonction RIghtNum est defini comme tel

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Function RightNum(str As String) As Double
    Dim n As Integer, i As Integer, ch As String, str0 As String, str1 As String, bln As Boolean
    str0 = Replace(str, ",", ".")
    n = Len(str0)
    For i = 1 To n
        ch = Mid(str0, i, 1)
        If IsNumeric(ch) Or ch = "." Then
            str1 = str1 + ch
            bln = True
 
        ElseIf bln = True Then
            Exit For
        End If
    Next i
    RightNum = CDbl(str1)
End Function