Programmation VBA pour Excel
Accueil
Sommaire du cours
Sommaire des exercices
Résumé du cours
Forum
Travaux
TICE
AgroParisTech
About
©AgroParisTech
Chapitre 6 - Répéter les mêmes actions - Les boucles
VBA fournit deux structures pour répéter en boucle les mêmes instructions : l’instruction Do...Loop et l’instruction For...Next.
La boucle Do...Loop
La boucle Do...Loop est utilisée lorsque l’on veut que la répétition des instructions s’arrête quand une condition donnée est vérifiée. On distingue plusieurs syntaxes possibles.

Do While condition 'Tant que la condition est vraie, les instructions sont exécutées

Instructions

Loop

Do Until condition 'Jusqu'à ce que la condition devienne vraie, les instructions sont exécutées

Instructions

Loop

Avec ces deux boucles, les instructions peuvent ne jamais être exécutées. Pour qu’elles soient exécutées au moins une fois, on peut utiliser l’une des deux syntaxes suivantes :

Do 'les instructions sont exécutées tant que la condition reste vraie

Instructions

Loop While condition

Do 'les instructions sont exécutées jusqu’à ce que la condition devienne vraie

Instructions

Loop Until condition

La boucle For...Next
La boucle For...Next est utilisée lorsque l’on connait à l’avance le nombre de fois où l’on veut que les instructions soient répétées.

For compteur = nbdébut To nbfin [Step nbpas]

Instructions 'instructions exécutées un nombre déterminé de fois

Next compteur

Les instructions de la boucle For...Next sont exécutées un nombre déterminé de fois. Lorsque l’option Step n’est pas renseignée, le compteur est incrémenté de 1 à chaque itération et les instructions sont exécutées nbdébut - nbfin fois.
Exemple :
La procédure suivante calcule la somme des n premiers entiers :

Sub SommeEntiers()

Dim somme As Integer

Dim compteur As Integer

Dim n As Integer

n = Range("A1").Value

For compteur = 1 To n

somme = somme + compteur

Next compteur

Range("A2").Value = "Somme des " & n & " premiers entiers : "

Range("B2").Value = somme

End Sub

Le compteur peut être, à chaque itération, incrémenté d'un pas choisi.
Exemple :

For compteur = 21 To 1 Step -2

Range("A" & compteur).Value = compteur – 1

Next compteur

La boucle For Each…Next
La boucle For Each…Next permet d’accéder aux objets d’une collection.
Exemple :

Sub ColorieCellule()

Dim MaPlage As Range

Dim Cellule As Range

Dim i As Integer

Set MaPlage = Range("A1:B5")

For Each Cellule In MaPlage

Cellule.Interior.ColorIndex = i

i = i + 1

Next Cellule

End Sub

Interrompre une boucle
L’instruction Exit permet de quitter un bloc Do…Loop, For…Next, Function, ou Sub. Sa syntaxe est la suivante : Exit + mot_clé_début_de_bloc
Exemples :
  • Exit Do, Exit For, Exit Function, Exit Sub ;
  • La boucle suivante s’arrête lorsque la réponse Rep est n ou N :
  • Do

    Rep = InputBox("Voulez-vous continuer ? (O/N)")

    If Lcase(rep) = "n" Then Exit Do

    Loop

    La fonction InputBox permet de créer une boîte de dialogue. Pour plus d’informations à ce sujet, reportez-vous au chapitre « Les entrées et sorties standards ».
    A vous de jouer ! ‹ lien vers les exercices