Optimisation d'un code VBA
Bonjour,
J'ai fait un programme VBA permettant d'obtenir la valeur moyenne de 1000 valeurs simulées.
Pour cela je simule 1000 fois une feuille Excel en fonction de différents paramètres pour récupérer la valeur d'une cellule puis je fais la moyenne.
Le souci est que le calcul de beaucoup de pages Excel prend beaucoup de temps, j'ai pu améliorer le code avec des astuces trouvées sur internet mais je n'arrive plus à améliorer le temps d'exécution du programme.
J'ai pensé à faire un programme qui permettrais de ne plus à avoir à passer par les feuilles Excel mais le problème c'est que je risque d'apporter souvent des modifications sur la feuille ce qui obligerai à modifier le code, de cela me prendrait beaucoup de temps car la feuille Excel est assez complexe.
C'est pour ça que je viens vous demander des idées ou des conseils pour améliorer mon code actuel.
Merci beaucoup à tous ce qui pourrait m'aider.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
Public Sub simulation()
Dim nbsim As Integer
Dim values(1 To 1000) As Long
nbsim = 1000
Sheets("Ctrl_T120_A58").Activate
Dim debut As Date, temps As Date, fin As Date
debut = Time
Application.ScreenUpdating = False
'Simulation des feuilles excel puis récupération de la valeur dans un vecteur
For I = 1 To nbsim
Range("sim").Select
ActiveCell.FormulaR1C1 = I
ActiveSheet.Calculate
values(I) = Range("noinet").Value
Next
Application.ScreenUpdating = True
'Calcul de la moyenne
Dim Sum As Double
Sum = 0
For L = 1 To 1000
Sum = Sum + values(L)
Next L
Range("nbvnet").Value = Sum / 1000
fin = Time
temps = fin - debut
MsgBox ("C'est fini !" & Chr(10) & "temps de traitement " & temps)
End Sub |