Toute l'actualité de [self-access.com] en direct sur votre ordinateur !  Vous êtes ici : Accueil » Visual Basic » Initiation à VB » Structures de contrôle » Boucles Do/LoopConnexion
 


Dans cet article... 
  • La boucle Do/While
  • Exit Do
  • La boucle Do/Until
  • Comparatif entre Do/While et Do/Until
  •  Article mis à jour le 19/06/2012

    La boucle Do/While

    La boucle Do/While (ou Do/While/Loop) ressemble fortement à la boucle While/Wend. Le principe est le même : "tant qu'une condition est respectée, exécuter une suite d'instructions".

    En fait : 

    1. Prenez une boucle While / Wend.
    2. Remplacez While par Do While.
    3. Remplacez Wend par Loop.

    et vous obtenez la variante !

    1. Sub TestBoucleDoWhile()
    2.     Dim i As Integer
    3.    
    4.     i = 1
    5.     Do While i <= 5
    6.         MsgBox "i vaut " & i
    7.        
    8.         i = i + 1
    9.     Loop
    10. End Sub

    Exit Do

    La ressemblance entre While/Wend et Do/While fait qu'on utilise quasiment tout le temps la première variante, plus compacte.

    Mais la deuxième garde quand même un intérêt : il est possible de forcer son arrêt par un Exit Do, de la même manière qu'on arrête une boucle For/Next par un Exit For.

    1. Sub TestBoucleDoWhile()
    2.     Dim i As Integer
    3.    
    4.     i = 1
    5.     Do While i <= 5
    6.         MsgBox "i vaut " & i
    7.        
    8.         If i = 3 Then Exit Do
    9.        
    10.         i = i + 1
    11.     Loop
    12.    
    13.     MsgBox "Terminé, i vaut " & i
    14. End Sub

    La boucle Do/Until

    Encore une variante de boucle : Do/Until (ou Do/Loop Until) est une boucle qui se traduit par "faire telle suite d'actions jusqu'à ce qu'une condition soit atteinte". La formulation est donc un peu différente d'une boucle While ("tant que...").

    1. Sub TestBoucleDoUntil()
    2.     Dim i As Integer
    3.    
    4.     i = 1
    5.     Do
    6.         MsgBox "i vaut " & i
    7.         i = i + 1
    8.     Loop Until i = 5
    9. End Sub

    Info
    Comme la boucle Do/While, la boucle Do/Until peut être interrompue par un Exit Do.

    Comparatif entre Do/While et Do/Until

    Les boucles Do/While et Do/Until n'ont pas tout à fait le même comportement.

    • La première évalue la condition dès l'entrée de la boucle.
    • La seconde évalue la condition après le premier tour de boucle.

    Essayez le code suivant. Vous verrez que la boucle While effectue 2 tours : le premier pour la valeur 0, le second pour la valeur 1. Alors que la boucle Until n'effectue qu'un tour, pour la valeur 0.

    Remplacez les i = 0 par des i = 1, et vous constaterez que la boucle While tourne toujours une fois (normal : la valeur de départ est bien inférieure ou égale à 1 dès l'entrée dans la boucle). Mais la boucle Until tourne maintenant indéfiniment : on rentre dans la boucle avant d'évaluer la condition, puis i est augmenté... et la condition de sortie n'est jamais vérifiée !

    Astuce
    Rappelez-vous que la combinaison Ctrl + Pause permet de forcer l'arrêt d'une boucle infinie. Ca peut toujours servir !

    1. Sub ComparatifDo()
    2.     Dim i As Integer
    3.    
    4.     i = 0
    5.     Do While i <= 1
    6.         MsgBox "Boucle While, i vaut " & i
    7.         i = i + 1
    8.     Loop
    9.    
    10.     i = 0
    11.     Do
    12.         MsgBox "Boucle Until, i vaut " & i
    13.         i = i + 1
    14.     Loop Until i <= 1
    15. End Sub

    Mes livres sur Access...
    [cliquez pour plus d'infos]





    Hit-Parade 
     
    [ Copyright 1997-2018 hervé inisan, self-access.com Reproduction interdite ]