problème de variables VBA

problème de variables VBA - VB/VBA/VBS - Programmation

Marsh Posté le 17-06-2013 à 12:14:27    

Bonjour à tous,
pourriez-vous me venir en aide car j'ai un problème concernant mes variables : le code ne me renvois absolument rien, et lorsque je débug pas à pas, je vois que mes variables sont vides. Or, lorsque NbSteps est de l'ordre de 500 ou plus, alors les variables apparaissent comme "elles devraient le faire".
 
Le code est le suivant :

Code :
  1. Function BinomialTree()
  2.     Dim dt As Double, NbSteps As Integer
  3.     Dim uS As Double, dS As Double, uB As Double, dB As Double
  4.     Dim RuSd As Double, RuSu As Double, RdSu As Double, RdSd As Double
  5.     Dim IntRateRiskless As Double, BondYield As Double, DividendYield As Double
  6.     Dim S_0 As Double, B_0 As Double
  7.     Dim NodeValue() As Double
  8.     Dim CouponFrequency As Double, Coupontime As Double, CouponSchedule() As Double
  9.     Dim ConversionRatio As Double, ConversionValue As Double
  10.    
  11.     Dim i As Double, j As Double, k As Double, l As Double
  12.    
  13.     Worksheets("BinomialTree" ).Activate
  14.    
  15.     dt = Range("Delta_t" ).Value
  16.     NbSteps = Range("NbSteps" ).Value
  17.     uS = Range("UpStock" ).Value
  18.     dS = Range("DownStock" ).Value
  19.     uB = Range("UpBond" ).Value
  20.     dB = Range("DownBond" ).Value
  21.     RuSd = Range("RuSd" ).Value
  22.     RuSu = Range("RuSu" ).Value
  23.     RdSu = Range("RdSu" ).Value
  24.     RdSd = Range("RdSd" ).Value
  25.     IntRateRiskless = Range("LnIntRate" ).Value
  26.     BondYield = Range("LnIntRateRisky" ).Value
  27.     DividendYield = Range("LnDivRate" ).Value
  28.     S_0 = Range("StockPrice" ).Value
  29.     B_0 = Range("BondPrice" ).Value
  30.     ConversionRatio = Range("Conversion" ).Value
  31.     CouponFrequency = Range("CouponFrequency" ).Value
  32.    
  33.     ReDim NodeValue(0 To NbSteps, 0 To NbSteps, 0 To NbSteps)
  34.    
  35.     For i = NbSteps To 0 Step -1
  36.         For j = NbSteps To 0 Step -1
  37.             NodeValue(i, j, NbSteps) = WorksheetFunction.Max(ConversionRatio * S_0 * (uS ^ i) * dS ^ (NbSteps - i), B_0 * (uB ^ j) * dB ^ (NbSteps - j))
  38.            
  39.         Next j
  40.     Next i
  41.    
  42.     For k = NbSteps - 1 To 0 Step -1
  43.         For i = k To 0 Step -1
  44.             For j = k To 0 Step -1
  45.                 NodeValue(i, j, k) = (RuSd * NodeValue(i, j + 1, k + 1) + RuSu * NodeValue(i + 1, j + 1, k + 1) + RdSd * NodeValue(i, j, k + 1) + RdSu * NodeValue(i + 1, j, k + 1)) * Exp(-IntRateRiskless * dt * k)
  46.            
  47.             Next j
  48.         Next i
  49.     Next k
  50.    
  51.     Cells(1, 2) = NodeValue(0, 0, 0) - B_0
  52.    
  53. End Function


 
Voilà pour le topo,
merci beaucoup d'avance
 
Rockr

Reply

Marsh Posté le 17-06-2013 à 12:14:27   

Reply

Marsh Posté le 17-06-2013 à 14:29:11    

 
           Bonjour,
 
           tout ce que je peux te dire est
 
           soit il y a une erreur dans les déclarations de type de variable, soit il y a une erreur dans une formule de calcul …
 
           Seul toi peux t'en sortir :  avance en mode pas à pas et affiche la Fenêtre Variables Locales;
                                                 à chaque étape vérifie le résultat de chaque variable …
 

Reply

Marsh Posté le 17-06-2013 à 16:55:42    

 
           Au fait c'est normal que la fonction ne renvoie rien car sa valeur de retour n'a pas été définie ‼  :ouch:  
           Consulter donc l'aide intégrée de VBA de l'instruction  Function  et son exemple.
           Serait-ce plutôt une procédure ?  Dans ce cas voir l'aide de l'instruction  Sub  …
 
           De plus, les variables initialisées dans les lignes n°26, 27 & 31 ne sont pas utilisées dans les calculs,
           un oubli ou ne servent-elles à rien, à part polluer la mémoire ?!  :sarcastic:
 
           Idem pour les variables déclarées Coupontime, CouponSchedule, ConversionValue, …
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed