Problème avec boucle code VBA

Bonjour,

J'ai un problème pour réaliser une boucle sur le code ci dessous. Il fonctionne bien pour une simulation. J'aimerais pouvoir le lancer NbCinf fois et obtenir à chaque fois dans ThisWorkbook.Sheets("Feuil3").Cells(l,1) = MC_CallPrice la valeur renvoyée à chaque fin de simulation afin d'en faire une moyenne (l était l'indice que j'ai choisi pour la grande boucle).

J'ai beau cherché, je n'y arrive pas. la boucle ne fonctionne pas. Il ne lance le traitement qu'une seule fois

Sub Bouton2_QuandClic()

Dim NbrPas As Single

McMethod = Range("MCMethode").Value

NbCInf = Range("NbCinf").Value

S0 = Range("TheSpot").Value

K = Range("TheStrike").Value

R = Range("TheFreeRate ").Value

NbrSteps = Range("Pas").Value

T = Range("TheMaturity").Value

sigma = Range("TheVol").Value

nbsim = Range("NbSimul").Value

ReDim Ct(NbrSteps, nbsim)

ReDim CallFinal(NbCInf, 1)

ReDim callpayoffvec(1 To nbsim, 1 To 1)

ReDim putpayoffvec(1 To nbsim, 1 To 1)

ReDim Trajec(NbrSteps, nbsim)

ReDim ones(NbrSteps, 1)

ReDim zeros(NbrSteps, 1)

Dim d1 As Double

Dim d2 As Double

Dim BS As Double

Dim Plage As Range

Dim shp As Shape

Worksheets("St").Range("A1:BZ60000").ClearContents

Worksheets("Feuil7").Range("A1:BZ60000").ClearContents

Worksheets("Ct").Range("A1:BZ60000").ClearContents

Dim counter As Single

counter = 1

dt = T / NbrSteps

Application.ScreenUpdating = False

Set f1 = Worksheets("St")

Set f2 = Worksheets("Pricer")

On Error Resume Next

f2.ChartObjects.Delete

On Error GoTo 0

randvec = NRandVars(NbrSteps * nbsim * NbCInf)

Spresent = S0 * ones(NbrSteps, 1)

Ssuivant = zeros(NbrSteps, 1)

With f1

.Rows(1).Clear

For i = 1 To nbsim

'Spresent = S0 * ones(NbrSteps, 1)

Spresent = S0

.Cells(1, 1) = S0

curtime = 0

tmpsum = 0

For j = 1 To NbrSteps

curtime = curtime + dt

randvar = randvec(counter)

dW = (dt ^ 0.5) * randvar

Ssuivant = Spresent + (R) * Spresent * dt + sigma * (Spresent ^ 1.5) * dW

.Cells(j, i) = Ssuivant

Spresent = Ssuivant

tmpsum = tmpsum + Ssuivant

counter = counter + 1

Next j

stavg = tmpsum / NbrSteps

callpayoffvec(i, 1) = Exp(-R * T) * Application.Max(stavg - K, 0)

putpayoffvec(i, 1) = Exp(-R * T) * Application.Max(K - stavg, 0)

Next i

With f1

Set Plage = f1.[A1].CurrentRegion

Set shp = f2.Shapes.AddChart

With .Range("F35:M50")

shp.Top = .Top

shp.Left = .Left

shp.Height = .Height

shp.Width = .Width

End With

With shp

.Name = "Graph_1"

With .Chart

.SetSourceData Source:=Plage, PlotBy:=xlColumns

.ChartType = xlLine

.Location where:=xlLocationAsObject, Name:=f2.Name

End With

End With

End With

Set f1 = Nothing: Set Plage = Nothing: Set shp = Nothing

'MC_CallPrice = Exp(-R * T) * GetMean(callpayoffvec)

' MC_CallPrice = Exp(-R * T) * GetMean(callpayoffvec)

Range("CallBrut").Value = MC_CallPrice

'Range("Put").Value = MC_putprice

End With

ThisWorkbook.Sheets("Feuil3").Cells(l, 1).Value = MC_CallPrice

End Sub

Bonjour

Moi je ne sais pas

Mais si tu veux avoir plus de chance d'avoir des réponses penses à joindre un fichier dans lequel tu expliques ce qu'il faut faire et ce que tu veux obtenir

Fais des exemples de résultats à obtenir

J'ai trouvé !

Il me fallait ajouter une variable pour stocker le résultat de chaque k et surtout réactualiser l'ensemble de mes paramètres entre deux k pour ne pas biaiser mes résultats suivants.

C'était plus un problème de conception que de code, je crois.

Merci

Rechercher des sujets similaires à "probleme boucle code vba"