VBA - Boucles Do-Until

UNE Do…Untilloop est utilisé lorsque nous voulons répéter un ensemble d'instructions tant que la condition est fausse. La condition peut être vérifiée au début de la boucle ou à la fin de la boucle.

Syntaxe

Voici la syntaxe d'un Do..Until boucle en VBA.

Do Until condition
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop

Représentation schématique

Exemple

L'exemple suivant utilise Do…Untilloop pour vérifier la condition au début de la boucle. Les instructions à l'intérieur de la boucle ne sont exécutées que si la condition est fausse. Il sort de la boucle lorsque la condition devient vraie.

Private Sub Constant_demo_Click() 
   i = 10
   Do Until i>15  'Condition is False.Hence loop will be executed
      i = i + 1
      msgbox ("The value of i is : " & i)
   Loop 
End Sub

Lorsque le code ci-dessus est exécuté, il imprime la sortie suivante dans une boîte de message.

The value of i is : 11

The value of i is : 12

The value of i is : 13

The value of i is : 14

The value of i is : 15

The value of i is : 16

Syntaxe alternative

Il existe également une syntaxe alternative pour Do...Untilboucle qui vérifie la condition à la fin de la boucle. La principale différence entre ces deux syntaxes est expliquée dans l'exemple suivant.

Do 
   [statement 1]
   [statement 2]
   ...
   [statement n]
   [Exit Do]
   [statement 1]
   [statement 2]
   ...
   [statement n]
Loop Until condition

Représentation schématique

Exemple

L'exemple suivant utilise Do...Untilloop pour vérifier la condition à la fin de la boucle. Les instructions à l'intérieur de la boucle sont exécutées au moins une fois, même si la condition est True.

Private Sub Constant_demo_Click()  
   i = 10
   Do 
      i = i + 1
      msgbox "The value of i is : " & i
   Loop Until i<15 'Condition is True.Hence loop is executed once.
End Sub

Lorsque le code ci-dessus est exécuté, il imprime la sortie suivante dans une boîte de message.

The value of i is : 11