Problème de Dépassement de capacité et temps de calcul important
amiro2017
Messages postés
207
Statut
Membre
-
amiro2017 Messages postés 207 Statut Membre -
amiro2017 Messages postés 207 Statut Membre -
Bonsoir le forum,
j'ai un problème lors de l'exécution de mon code VBA d'une part j'ai un temps de calcul long et d'autre part lors j'excute un autre procédure un message s'affiché
"dépassement de capacité" sachant que mon code contient des formule de calculs et surtout la fonction monte carlo qui nécessite un temps important d'éxécution!
s'il vous plaît aidez-moi à résoudre ce problème et merci d'avance
j'ai un problème lors de l'exécution de mon code VBA d'une part j'ai un temps de calcul long et d'autre part lors j'excute un autre procédure un message s'affiché
"dépassement de capacité" sachant que mon code contient des formule de calculs et surtout la fonction monte carlo qui nécessite un temps important d'éxécution!
s'il vous plaît aidez-moi à résoudre ce problème et merci d'avance
1 réponse
-
Bonjour,
Certe, mais sans votre code, pouvons rien voir-
Private Sub CommandButton5_Click()
Application.ScreenUpdating = False
Dim derniereLigne As Integer
Dim i, j, T As Integer
Dim m, sigma, m1, sigma1 As Double
Dim V1(), V2(), D1(), D2() As Double
Worksheets("feuil1").Activate
derniereLigne = Range("B" & Rows.Count).End(xlUp).Row
ReDim V1(1 To 253, 1 To 1)
ReDim V2(1 To 253, 1 To 1)
ReDim D1(1 To 10000, 2 To 252)
ReDim D2(1 To 10000, 2 To 252)
For i = derniereLigne - 252 To derniereLigne - 1
V1(derniereLigne - i + 1, 1) = Application.WorksheetFunction.Ln(Cells(i, 2) / Cells(i + 1, 2))
V2(derniereLigne + 1 - i, 1) = Application.WorksheetFunction.Ln(Cells(i, 3) / Cells(i + 1, 3))
Next i
m = Application.WorksheetFunction.Median(V1)
sigma = Application.WorksheetFunction.StDev(V1)
m1 = Application.WorksheetFunction.Median(V2)
sigma1 = Application.WorksheetFunction.StDev(V2)
T = 1
For i = 2 To 252
For j = 1 To 1000
D1(j, i) = Cells(i, 2) * Exp((m - 0.5 * sigma ^ 2) * T - sigma * Application.NormInv(Rnd(), 0, 1) * Sqr(T))
D2(j, i) = Cells(i, 3) * Exp((m1 - 0.5 * sigma1 ^ 2) * T - sigma1 * Application.NormInv(Rnd(), 0, 1) * Sqr(T))
Next j
Cells(i, 5).Value = D1(1000, i)
Cells(i, 6).Value = D2(1000, i)
Next i
Dim ObjCell1(), ObjCell() As Double
ReDim ObjCell(2 To 252, 1 To 1)
ReDim ObjCell1(2 To 252, 1 To 1)
For i = 2 To 250
ObjCell1(i, 1) = 21517363.669192 * Application.WorksheetFunction.Ln(Cells(i, 2) / Cells(i + 1, 2)) + 44152744.8658505 * Application.WorksheetFunction.Ln(Cells(i, 3) / Cells(i + 1, 3))
ObjCell(i, 1) = 21517363.669192 * Application.WorksheetFunction.Ln(Cells(i, 5) / Cells(i + 1, 5)) + 44152744.8658505 * Application.WorksheetFunction.Ln(Cells(i, 6) / Cells(i + 1, 6))
Next i
m = Application.WorksheetFunction.Median(ObjCell)
sigma = Application.WorksheetFunction.StDev(ObjCell)
Worksheets("feuil2").Activate
ThisWorkbook.Worksheets("feuil2").Range("B2:B252").Value = ObjCell1
TextBox6.Text = Format(Application.WorksheetFunction.NormInv(0.99, m, sigma), "0.0000")
TextBox5.Text = Format(-WorksheetFunction.Percentile_Inc(Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row - 1), 0.01), "0.0000")
ThisWorkbook.Worksheets("feuil2").Range("E2:E252").Value = ObjCell
TextBox4.Text = Format(-WorksheetFunction.Percentile_Inc(Range("E2:E" & Range("E" & Rows.Count).End(xlUp).Row - 1), 0.01), "0.0000")
Application.Calculation = xlCalculationAutomatic
End Sub -
bonjour, suggestions:
Dim m As Double, sigma As Double, m1 As Double, sigma1 As Double
idem autres dim
ajouter au début:Application.Calculation = xlCalculationManual
question: sur quelle ligne as-tu l'erreur?
-