[RESOLU]Probleme debogage?

Yaniv

XLDnaute Junior
bonjiour a tous je dispose de ma fonction vba suivante
Code:
Function stkr(code As String) As Variant
Dim y, z As Variant

If code Like "*Capspread*" Then
z = Split(code, " ")
y = Split(z(2), "/")
 If z(2) Like "*%*" Then
stkr = Abs(Val(y(0)) - Val(y(1))) * 100
Else: stkr = Abs(Val(y(0)) - Val(y(1)))
End If
ElseIf code Like "*Floorspread*" Then
z = Split(code, " ")
y = Split(z(2), "/")
 If z(2) Like "*%*" Then
stkr = -Abs(Val(y(0)) - Val(y(1))) * 100
Else: stkr = -Abs(Val(y(0)) - Val(y(1)))
End If
Else: stkr = " "
End If
End Function

cette fonction me permet pour le code exemple suivant*
"3m Capspread 2/2.5% 30s2s "
de me renvoyer la valeur du strike relatif autrement dit dans mon cas il s agit de la diffenrece (2,5-2)*100 et dans le cas d un floorspread c pareil ss la valeur absolu.
Toutefois lorsque jexecute la fonction elle marche pas
 
Dernière édition:

Zon

XLDnaute Impliqué
Re : Probleme debogage?

Salut,


je comprends le VBA mais pas le strike donc:

le split te donne

en Y(0) =2 et Y(1)= 2.5% donc ce sera Y(1) - Y(0)

dans ces conditons VBA comprend pas 2.5% en string, il faut le supprimer avec par exemple left et instr:

Left(y(1), InStr(1, y(1), "%") - 1) te donnera 2.5

je prefère utliser cdbl plutôt que val (ce dernier ne connait que le point comme séparateur)

stkr = Abs(Val(y(0)) - Val(y(1))) * 100
devient donc
stkr=(cdbl(Left(y(1), InStr(1, y(1), "%") - 1))-cdbl(y(0))*100


à toi d'essayer d'adapter le reste et de revenr que tu y arrives ou pas.


A+++
 

Yaniv

XLDnaute Junior
Re : Probleme debogage?

bonjour , je vous remercie pour votre aide , j ai effectivement compris mon probleme et donc j ai plutot creer une fonction convertnum qui me convertit en nombre un string contenant un % dc mon probleme est regle du coup grace a votre aide , merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16