Tout ce que vous devez savoir sur les boucles Do While et Do Until Loop en VBA
En VBA (Visual Basic for Applications), les boucles sont un outil fondamental pour automatiser des tâches répétitives. Parmi ces boucles, la boucle Do…While est particulièrement utile pour exécuter un bloc de code tant qu’une condition reste vraie. Dans ce guide, vous allez apprendre à utiliser la boucle Do…While, à comprendre ses variantes, comme la boucle Do Until, et à maîtriser l’instruction Exit Do pour contrôler vos boucles.
Pour apprendre à contrôler vos boucles et éviter les erreurs courantes, inscrivez-vous à notre formation complète VBA Excel qui couvre en détail les ‘Loop While’. »
Comprendre la syntaxe de la boucle Do…While
Synthaxe
La syntaxe de la boucle Do…While est simple et directe. Voici à quoi elle ressemble :
Do While [condition] ' Code à exécuter Loop
- Do While [condition] : Cette ligne marque le début de la boucle. Tant que la condition est vraie (c’est-à-dire qu’elle retourne True), le code à l’intérieur de la boucle sera exécuté.
- Loop : Cette ligne marque la fin de la boucle. Une fois que le code a été exécuté, le programme revient à la ligne Do While pour réévaluer la condition.
Exemples
Exemple 1 : Boucle de comptage
Voici un exemple simple qui affiche une boîte de message (MsgBox) pour chaque valeur de la variable i tant qu’elle est inférieure ou égale à 5.
Dim i As Integer i = 1 Do While i <= 5 MsgBox "i vaut " & i i = i + 1 Loop
Exemple 2 : Validation d’entrée des utilisateurs
Dans cet exemple, la boucle continue de demander une entrée à l’utilisateur jusqu’à ce qu’il tape « exit ».
Dim inputValue As String Do While inputValue <> "exit" inputValue = InputBox("Tapez 'exit' pour quitter :") Loop
- Tant que l’utilisateur ne saisit pas « exit », la boucle continue de demander une entrée.
- Une fois « exit » saisi, la condition devient fausse et la boucle s’arrête.
La boucle Do Until : En quoi est-elle différente ?
La boucle Do Until est une autre forme de boucle en VBA, qui fonctionne de manière inverse à Do While. Voici sa syntaxe :
Do Until [condition] ' Code à exécuter Loop
Les différences avec Do While sont :
- Do While exécute le code tant que la condition est vraie.
- Do Until exécute le code tant que la condition est fausse.
Voyons un exemple pour illustrer la différence.
Dim i As Integer i = 1 Do Until i > 5 MsgBox "i vaut " & i i = i + 1 Loop
- Cette boucle continue de s’exécuter tant que i est inférieur ou égal à 5.
- Contrairement à Do While, où la boucle continue tant que la condition est vraie, ici, la boucle continue tant que la condition est fausse.
Vérification d’un critère avant l’exécution du code (Do While)
Cet exemple montre une situation où vous voulez que l’utilisateur saisisse un nombre supérieur à 10.
Dim inputValue As String inputValue = InputBox("Tapez un nombre supérieur à 10 :") Do While Val(inputValue) <= 10 inputValue = InputBox("Nombre trop petit, réessayez :") Loop MsgBox "Merci ! Vous avez saisi : " & inputValue
- La boucle vérifie d’abord si la condition (le nombre est supérieur à 10) est remplie avant d’exécuter le code.
- Si la condition n’est pas remplie, la boucle continue de demander un nouvel input.
Exécution du code au moins une fois avant la vérification (Do Until)
Cet exemple montre comment utiliser Do Until pour s’assurer que le code est exécuté au moins une fois avant de vérifier la condition.
Dim inputValue As String Do Until Val(inputValue) > 10 inputValue = InputBox("Tapez un nombre supérieur à 10 :") Loop MsgBox "Merci ! Vous avez saisi : " & inputValue
- Ici, la boucle s’exécute au moins une fois avant de vérifier si la condition (le nombre est supérieur à 10) est remplie.
- Ce type de boucle est utile lorsque vous devez exécuter une action au moins une fois, indépendamment de la condition.
Utiliser l’instruction Exit Do
Parfois, vous avez besoin de quitter une boucle avant que la condition ne soit remplie. C’est là que l’instruction Exit Do entre en jeu.
Supposons que vous souhaitiez arrêter la boucle lorsque i atteint 5, même si la condition de la boucle est encore vraie.
Dim i As Integer i = 1 Do While i <= 10 If i = 5 Then Exit Do End If MsgBox "i vaut " & i i = i + 1 Loop MsgBox "Boucle terminée à i = " & i
- La boucle commence normalement.
- Lorsque i atteint 5, l’instruction Exit Do est exécutée, ce qui interrompt la boucle immédiatement.
- Le programme continue alors après la boucle, affichant une MsgBox indiquant que la boucle s’est terminée à i = 5.
Conseils
- Éviter les boucles infinies : Une boucle infinie se produit lorsque la condition de fin n’est jamais atteinte. Pour éviter cela, assurez-vous que la condition de la boucle peut devenir fausse à un moment donné, par exemple en augmentant ou en diminuant une variable dans la boucle.
- Débogage et tests : Utilisez des MsgBox pour suivre la progression des variables dans vos boucles. Cela vous aidera à comprendre ce qui se passe et à identifier les erreurs plus facilement.
Si vous avez du mal à maîtriser les boucles ‘Loop While’, un développeur VBA Excel peut créer pour vous des solutions efficaces et sur mesure.
D’autres solutions vous permettent de réaliser des boucles avec la programmation VBA :