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.
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
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
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
Partager