Microsoft® Visual Basic® Scripting Edition Boucles de répétition du code |
Didacticiel VBScript Précédent Suivant |
Utilisation des boucles pour répéter du code
Les boucles vous permettent de répéter l'exécution d'un groupe d'instructions. Certaines boucles répètent les instructions jusqu'à ce qu'une condition ait pour valeur False (fausse) ; d'autres répètent les instructions jusqu'à ce qu'une condition ait pour valeur True (vraie). Il existe aussi des boucles qui répètent des instructions un nombre de fois spécifié.Les instructions de boucle suivantes sont disponibles dans VBScript :
- Do...Loop : effectue une boucle tant qu'une condition est True ou jusqu'à ce qu'elle le devienne.
- While...Wend : effectue une boucle tant qu'une condition a pour valeur True.
- For...Next : utilise un compteur pour exécuter des instructions un nombre de fois spécifié.
- For Each...Next : répète un groupe d'instructions pour chaque élément d'une collection ou pour chaque élément d'un tableau.
Utilisation des boucles Do
Vous pouvez utiliser les instructions Do...Loop pour exécuter un bloc d'instructions un nombre de fois indéfini. Les instructions sont répétées tant qu'une condition a pour valeur True ou jusqu'à ce qu'elle ait pour valeur True.Répétition d'instructions tant qu'une condition a pour valeur True
Utilisez le mot clé While pour contrôler une condition dans une instruction Do...Loop. Vous pouvez contrôler la condition avant d'entrer dans la boucle (comme dans l'exemple CtrlPremierWhile suivant) ou après que la boucle se soit exécutée au moins une fois (comme dans l'exemple CtrlDernierWhile suivant). Dans la procédure CtrlPremierWhile, si monNum a pour valeur 0 au lieu de 20, les instructions à l'intérieur de la boucle ne s'exécuteront jamais. Dans la procédure CtrlDernierWhile, les instructions à l'intérieur de la boucle s'exécutent une seule fois parce que la condition a déjà pour valeur False.Sub CtrlPremierWhile() Dim compteur, monNum compteur = 0 monNum = 20 Do While monNum > 10 monNum = monNum - 1 compteur = compteur + 1 Loop MsgBox "La boucle a effectué " & compteur & " répétitions." End Sub Sub CtrlDernierWhile() Dim compteur, monNum compteur = 0 monNum = 9 Do monNum = monNum - 1 compteur = compteur + 1 Loop While monNum > 10 MsgBox "La boucle a effectué " & compteur & " répétitions." End Sub
Répétition d'instructions jusqu'à ce qu'une condition prenne la valeur True
Vous pouvez utiliser le mot clé Until de deux façons pour contrôler une condition dans une instruction Do...Loop. Vous pouvez contrôler la condition avant d'entrer dans la boucle (comme dans l'exemple CtrlPremierUntil suivant) ou après que la boucle se soit exécutée au moins une fois (comme dans l'exemple CtrlDernierUntil suivant). La boucle est effective tant que la condition a pour valeur False.Sub CtrlPremierUntil() Dim compteur, monNum compteur = 0 monNum = 20 Do Until monNum = 10 monNum = monNum - 1 compteur = compteur + 1 Loop MsgBox "La boucle a effectué " & compteur & " répétitions." End Sub Sub CtrlDernierUntil() Dim compteur, monNum compteur = 0 monNum = 1 Do monNum = monNum + 1 compteur = compteur + 1 Loop Until monNum = 10 MsgBox "La boucle a effectué " & compteur & " répétitions." End Sub
Sortie d'une instruction Do...Loop dans une boucle
Vous pouvez sortir d'une boucle Do...Loop en utilisant l'instruction Exit Do. En règle générale, vous ne sortez d'une boucle que dans des situations particulières (pour éviter une boucle infinie, par exemple). Dans ce cas, vous devez utiliser l'instruction Exit Do uniquement dans le bloc d'instructions True d'une instruction If...Then...Else. Si la condition a pour valeur False, la boucle s'exécute normalement.Dans l'exemple ci-dessous, monNum reçoit une valeur qui crée une boucle infinie. L'instruction If...Then...Else contrôle cette condition afin de prévenir une répétition infinie.
Sub ExempleDeSortie() Dim compteur, monNum compteur = 0 monNum = 9 Do Until monNum = 10 monNum = monNum - 1 compteur = compteur + 1 If monNum < 10 Then Exit Do Loop MsgBox "La boucle a effectué " & compteur & " répétitions." End Sub
Utilisation de While...Wend
L'instruction While...Wend figure dans VBScript à l'intention des utilisateurs avertis. Cependant, en raison du manque de souplesse de While...Wend, il est recommandé d'utiliser plutôt Do...Loop.
Utilisation de For...Next
Vous pouvez utiliser les instructions For...Next pour exécuter un bloc d'instructions un nombre de fois spécifié. Pour les boucles, utilisez une variable compteur dont la valeur est augmentée ou diminuée à chaque répétition de la boucle.Dans l'exemple ci-dessous, la procédure MaProc s'exécute 50 fois. L'instruction For spécifie la variable compteur x et ses valeurs de début et de fin. L'instruction Next incrémente la variable compteur de 1.
Grâce au mot clé Step, vous pouvez spécifier la valeur d'incrémentation ou de décrémentation de la variable. Dans l'exemple ci-dessous, la variable compteur j est incrémentée de 2 à chaque itération de la boucle. Lorsque la boucle se termine, le total est la somme de 2, 4, 6, 8 et 10.Sub ExecMaProc50fois() Dim x For x = 1 To 50 MaProc Next End Sub
Pour décrémenter la variable compteur, vous utilisez une valeur de Step négative. Vous spécifiez alors une valeur de fin inférieure à la valeur de départ. Dans l'exemple ci-dessous, la variable compteur monNum est décrémentée de 2 à chaque itération de la boucle. Lorsque la boucle se termine, le total est la somme de 16, 14, 12, 10, 8, 6, 4 et 2.Sub TotalDes2() Dim j, total For j = 2 To 10 Step 2 total = total + j Next MsgBox "Le total est " & total End Sub
Vous pouvez quitter une instruction For...Next avant que le compteur atteigne sa valeur de fin en utilisant l'instruction Exit For. En règle générale, vous ne sortez d'une boucle que dans des situations particulières. En cas d'erreur par exemple, vous devez utiliser l'instruction Exit For uniquement dans le bloc d'instructions True d'une instruction If...Then...Else. Si la condition a pour valeur False, la boucle s'exécute normalement.Sub NouveauTotal() Dim monNum, total For monNum = 16 To 2 Step -2 total = total + monNum Next MsgBox "Le total est " & total End Sub
Utilisation de Each...Next
Une boucle For Each...Next ressemble à une boucle For...Next. Au lieu de répéter un groupe d'instructions un nombre de fois spécifié, une boucle For Each...Next le répète pour chaque élément d'une collection d'objets ou d'un tableau. Ceci s'avère particulièrement utile lorsque vous ne connaissez pas le nombre d'éléments d'une collection.Dans l'exemple de code HTML suivant, le contenu d'un objet Dictionary est utilisé pour placer du texte dans plusieurs boîtes de texte :
<HTML> <HEAD><TITLE>Feuilles et éléments</TITLE></HEAD> <SCRIPT LANGUAGE="VBScript"> <!-- Sub cmdChanger_OnClick Dim d 'Créer une variable Set d = CreateObject("Scripting.Dictionary") d.Add "0", "Athènes" 'Ajouter des clés et des éléments d.Add "1", "Belgrade" d.Add "2", "Le Caire" For Each I in d Document.frmForm.Elements(I).Value = D.Item(I) Next End Sub --> </SCRIPT> <BODY> <CENTER> <FORM NAME="frmForm" <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Text"><p> <Input Type = "Button" NAME="cmdChanger" VALUE="Cliquez ici"><p> </FORM> </CENTER> </BODY> </HTML>