121 votes

Sortez d'une boucle While...Wend

Je suis en train d'utiliser une boucle While...Wend en VBA.

Dim count as Integer

While True
    count=count+1

    If count = 10 Then
        ''Quelle est la déclaration pour sortir de la boucle While...Wend? 
        ''Break ou Exit While ne fonctionnent pas
    EndIf
Wend

Je ne veux pas utiliser de condition comme `While count<=10...Wend`

208voto

Alex K. Points 67805

Une boucle While/ Wend ne peut être interrompue prématurément qu'avec un GOTO ou en sortant d'un bloc extérieur ( Exit sub/ function ou une autre boucle pouvant être quittée)

Changer pour une boucle Do à la place:

 Do While True
    count = count + 1

    If count = 10 Then
        Exit Do
    End If
Loop

Ou pour boucler un nombre défini de fois:

for count = 1 to 10
   msgbox count
next

( Exit For peut être utilisé ci-dessus pour sortir prématurément)

0 votes

Quelle est la différence entre un While et un Do While s'il vous plaît ?

0voto

RannochRob Points 21

Et si on réglait les paramètres du test "While" dans la boucle afin que la boucle se termine à la prochaine itération. Par exemple...

OS = 0
While OS <> 1000 
OS = OS + 1 
If OS = 500 Then OS = 1000 
Wend

D'accord, c'est un exemple totalement inutile mais cela montre le principe...

0voto

Sam Martin Points 1

Une autre option serait de définir une variable drapeau comme un Boolean puis de changer cette valeur en fonction de vos critères.

Dim count as Integer 
Dim flag as Boolean

flag = True

While flag
    count = count + 1 

    If count = 10 Then
        'Définir le drapeau sur faux         '
        flag = false
    End If 
Wend

0voto

deseosuho Points 191

La meilleure façon est d'utiliser une clause And dans votre déclaration While

Dim count as Integer
count =0
While True And count <= 10
    count=count+1
    Debug.Print(count)
Wend

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X