Pour optimiser le temps de calcul :
1. Au début, mettre
Application.ScreenUpdating = False |
et à la fin, restituer l'option d'affichage avec
Application.ScreenUpdating = True |
2. Puisque la condition ne dépend pas de la variable i, déporter la condition avant la boucle afin que le if ne soit exécuter qu'une fois au lieu de 100 fois :
If (Worksheets("exercice 1" ).Cells(23, 1).Value = 0) Then For i = 1 To 100 Calculate Worksheets("exercice 1" ).Cells(23, 3).Value = Worksheets("exercice 1" ).Cells(23, 3).Value + 1 Next i Else For i = 1 To 100 Calculate Worksheets("exercice 1" ).Cells(23, 4).Value = Worksheets("exercice 1" ).Cells(23, 4).Value + 1 Next i End If |
Le code est plus long et la partie "calculate" est dupliquée, mais cela vaut peut-être le coup quand même.