Mouvement Brownien Arithmétique sous VBA

Bonjour,

J'essaie de faire tourner cette sous-routine de mouvement brownien Arithmétique que j'ai pu découvrir dans un livre de finance, mais il me ressort que des 0 en résultats...
Quelqu'un peut il m'aider ?

Sub Brownarith()
a = 0.9
sigma = 0.3
T = 0.25
N = 100
dt = T / N
xt = 0
Range("stock").Offset(0, 0) = xt
For i = 1 To N
Randomize
eps = Application.WorksheetFunction.NormSInv(Rnd)
xt = xt + a * dt + sigma * eps * Sqr(dt)
Range("stock").Offset(i, 0) = xt
Next i

End Sub

Je ne comprends pas du tout pourquoi ?

Merci à tous par avance

2 réponses

  1. bonsoir,

    chez moi ça tourne en remplacant range("stock") par range ('"A1")

    à quoi correspond stock ?

    Bonne soirée
    0
    1. Bonsoir,

      En fait effectivement j'ai réussi a le faire tourner, mais les valeurs affichées ne sont que des 0 ?

      Dans le livre il nomme le range "stock" juste pour différencier par rapport aux autres routines..

      Merci encore d'avance,

      Quentin
      0
  2. Bonsoir,

    Merci pour ta réponse, en fait j'appelle "stock" le range parce que cela correspond à ce qui était écrit dans le livre car c'est pour déterminer une colonne. c'est juste de manière a séparer les colonne pour différent essaies je pense.
    Par contre je ne comprends pas car moi ca marche aussi mais cela ne me met que des 0 dans la colonne ?

    Encore merci pour la réponse.

    Quentin
    0
    1. re,
      peut-être juste un format de cellule?
      ci dessous un extrait du résultat en format de cellule standard :
      0
      0,004069571
      -0,007210638
      0,021887283
      0,026467768
      0,023981897
      0,0135307
      0,01448573
      0,023107438
      0,01889847
      0,01441465
      0,00811452
      -0,020035625
      -0,016100151
      0,015441585
      0,005915358
      0
    2. Pour moi aussi ca marche en fait quand je définis les variable "as variant".
      J'avais mis "as integer" au départ... d'ailleurs pourquoi cela ne peut il pas fonctionner ?

      Encore merci en tout cas pour la réponse.

      Quentin
      0
    3. Ah ben oui!

      integer comme son nom l'indique ne peut contenir que des entiers!
      donc tous se qui se trouve après la virgule est "tronqué".
      le type "variant" englobe tous types de variable
      il existe d'autres types numeriques à utiliser suivant ce qu'on veux y mettre.
      La différence c'est la taille occupée en mémoire.
      A consulter l'aide VBA!

      Bonne journée
      0