Optimisation boucle While Wend

Bonjour le Forum,

J'ai une boucle qui met beaucoup de temps à s'exécuter et j'aimerai savoir si il y a un moyen de l'optimiser.

Toutes les valeurs dans les cellules sont des chiffres.

Je vous mets un extraie du code.

Sub Revenus()

Application.ScreenUpdating = False

Dim B As Integer

If Range("Q4") < Range("P4") Then
Union(Range("AE15"), Range("AE30"), Range("AE45")) = Range("Q4").Value2
B = Range("Q4").Value2
    While Range("AE17").Value2 <= Range("AE16").Value2 * 0.1 Or Range("AE17").Value2 <= (Range("AE16").Value2 * 0.1) * (1.03) Or Range("AE17") < 0
    B = B + 2000
    Range("AE15") = B
    Wend
    If Range("AE26") > 0 And Range("AE28") > 0 Then
        While Range("AE32").Value2 <= Range("AE31").Value2 * 0.1 Or Range("AE32").Value2 <= (Range("AE31").Value2 * 0.1) * (1.03) Or Range("AE32") < 0
        B = B + 2000
        Range("AE30") = B
        Wend
    End If
    If Range("AE41") > 0 And Range("AE43") > 0 Then
        While Range("AE47").Value2 <= Range("AE46").Value2 * 0.1 Or Range("AE47").Value2 <= (Range("AE46").Value2 * 0.1) * (1.03) Or Range("AE47") < 0
        B = B + 2000
        Range("AE45") = B
        Wend
    End If

End if

Application.ScreenUpdating = True

End sub

Merci d'avance de vos lumières.

Je pense que ça peut être optimisé !

A++

Wolf76

Bonjour,

Si je prends le premier test, et que AE17< AE16 * 0.1 A quel moment la boucle s'arrêtera? puisque les valeurs de AE17 ou AE16 restent inchangées.

Donc c'est une boucle infinie.

idem pour les autres tests

Cdlt

Bonjour,

AE17 et AE16 change car ce sont des formules.

Donc je ne sais pas quand la boucle s'arrête c'est bien mon problème !!

Une idée ?

A++

WOlf76

bonjour,

peux-tu mettre ton classeur avec la macro et les formules ?

Rechercher des sujets similaires à "optimisation boucle while wend"