VBA : La boucle TANT QUE



La seconde structure répétitive utilisée en algorithmie est la boucle TANT QUE, vous devez la choisir à chaque fois que le nombre d'itérations vous est inconnu au départ et que vous souhaitez évaluer votre condition en entrant dans la boucle. Sa notation générale pourrait s'écrire comme cela :
TANT QUE Condition FAIRE
    Action(s)
Fin de TANT QUE
Voyons comment utiliser cette structure en langage VBA.

- 1 - Dans ce premier exemple nous demandons à l'utilisateur de saisir un nombre entier qui sera stocké dans un tableau. La saisie s'arrêtera lorsque l'utilisateur répondra N à la question "voulez vous entrez un autre nombre ?" Ainsi on n'ignore au départ le nombre d'entier qui sera saisie (cela dépend de l'utilisateur).

Sub MaBoucle_1()
Dim MonTableau(100) As Integer
Dim reponse  As String
Dim x As Integer
x = 1
Do While reponse <> "N"
    MonTableau(x) = InputBox("Entrez un nombre entier ?", "
Bonjour", 0)
    x = x + 1
    reponse = UCase(InputBox("Voulez vous rejouer o/n ?", "Bonjour", "O"))
Loop
End Sub


- 2 - Bien évidement l'une des actions contenue dans la boucle doit être susceptible de modifier la condition d'entrée dans la boucle, ainsi dans ce deuxième exemple (surtout ne le tester pas) nous courons droit au désastre puisque rien ne viendra jamais modifier la valeur de la variable reponse.

Sub MaBoucle_2()
Dim MonTableau(100) As Integer
Dim reponse  As String
Dim x As Integer
x = 1
Do While reponse <> "N"
    MonTableau(x) = InputBox("Entrez un nombre entier ?", " ", 0)
    x = x + 1
Loop
End Sub


- 3 - Il existe une autre syntaxe VBA pour l'écriture de la boucle tant que, dans ce troisième exemple nous allons colorier les cellules de la feuille de calcul à l'aide des 57 valeurs possibles de la propriété Interior.ColorIndex

Sub MaBoucle_3()
Dim nbCouleur As Byte
Dim ligne As Byte
nbCouleur = 0
ligne = 1
While ligne <= 57
    Range("A" & ligne).Select
    Selection.Interior.ColorIndex = nbCouleur

'changeons l'index de couleur et incrémentons la ligne pour espérer sortir de la boucle
    nbCouleur = nbCouleur + 1
    ligne = ligne + 1
Wend
End Sub



0 commentaires:

Enregistrer un commentaire

top