_Si vous écrivez un programme VBA et que vous souhaitez exécuter la même tâche plusieurs fois, vous pouvez le faire en utilisant VBA pour les boucles. VBA est un langage de programmation séquentiel. Chaque ligne de code est exécutée de haut en bas jusqu’à ce qu’il n’y ait plus de lignes de code à lire. Si vous souhaitez revenir en arrière et effectuer une tâche, vous devez forcer en utilisant le code de macro.

Vous obtenez des résultats avec loop._

La boucle For dans VBA est l’un des types de boucle les plus courants. La boucle For a deux formes: For Next et For Each In Next. La boucle For est généralement utilisée pour se déplacer séquentiellement dans une liste d’éléments ou de nombres.

Pour terminer la boucle For à un moment donné, nous pouvons utiliser l’instruction exit.

For Loop tournera en rond jusqu’à ce qu’il remplisse la condition de fin. Une fois la condition de fin remplie, le flux de programmation continuera vers le bas, dans sa direction naturelle.

The For … Next loop has the following syntax:

For counter = start_counter To end_counter

'Do something here (your code)

Next counter

Nous créons en fait une boucle qui utilise un compteur variable comme «garde-temps» de la boucle. Nous le définissons sur une valeur égale à start_counter au début de la boucle, puis l’incrémentons de 1 pendant chaque boucle jusqu’à ce qu’il remplisse la condition de fin. La boucle s’exécutera jusqu’à ce que la valeur du compteur devienne égale à end_counter. La boucle s’exécute pour la dernière fois lorsque les deux valeurs ci-dessus correspondent, puis la boucle s’arrête.

Tout ce qui précède peut être déroutant pour certaines personnes, alors préparons-nous et commençons à apprendre For Loop dans Excel avec quelques exemples.

Créez un nouveau classeur Excel puis enregistrez-le avec l’extension .xlsm Pour lancer l’écran de l’éditeur Visual Basic, utilisez ALT + F11 Insérer un nouveau module Copiez le code ci-dessous dans le module standard VB

img1

Boucle 1 (Affichage du numéro avec msgbox)

Sub Loop1()

Dim StartNumber As Integer

Dim EndNumber As Integer

EndNumber = 5



For StartNumber = 1 To EndNumber

MsgBox StartNumber & " is " & "Your StartNumber"

Next StartNumber

End Sub

img2

Explication du code:

Le code VBA nécessite que vous attribuiez une valeur à StartNumber, où EndNumber sont des variables déclarées comme des entiers comme point de départ de votre boucle Ces valeurs peuvent être n’importe quel nombre et nous avons EndNumber comme 5 StartNumber est commencé à 1 Pour StartNumber = 1 To EndNumber signifie que le code commencera de 1 (StartNumber) à 5 (EndNumber)

  • MsgBox StartNumber & « is » & « Your StartNumber » affichera la boîte de message suivante

img3

Loop2 (Remplir les valeurs)

Sub Loop2()

'Fills cells A1:A56 with values of X by looping' --- Comment

'Increase value of X by 1 in each loop' --- Comment

Dim X As Integer

For X = 1 To 56

Range("A" & X).Value = X

Next X

End Sub

img4

Explication du code:

Nous avons assigné X comme entier Pour X = 1 à 56; cela commencera par 1 et se poursuivra jusqu’à 56 avec un incrément de 1 à chaque fois * Range (« A » & X) .Value = X; cette ligne stockera la valeur de X et passera de la plage A1 à A56

img5

Loop3 (Remplir les cellules avec la couleur de fond)

Sub Loop3()

' Fills cells B1:B56 with the 56 background colours' --- Comment

Dim X As Integer

For X = 1 To 56

Range("B" & X).Select

With Selection.Interior

.ColorIndex = X

.Pattern = xlSolid

End With

Next X

End Sub

img6

Explication du code:

Nous avons assigné X comme un entier Pour X = 1 à 56 commencera par 1 et continuera jusqu’à 56 avec un incrément de 1 à chaque fois Range (« B » & X) .Select; cette ligne stockera la valeur de X et sélectionnera la cellule B1 à B56 Les 4 lignes suivantes, c’est-à-dire Avec Selection.Interior sélectionnera le colorindex intérieur et prendra la valeur de X de ce colorindex de sorte que 1 appartienne à la couleur noire; 2 appartient à la couleur blanche; 3 pour rouge et ainsi de suite

img7

Boucle 4 (Remplir les valeurs par incrément de 2)

Par défaut, la valeur du pas est avant 1, mais elle peut être définie sur un nombre supérieur à 1.

Sub Loop4()

' Fills every second cell from C1:C50 with values of X' --- Comment

Dim X As Integer

For X = 1 To 50 Step 2

Range("C" & X).Value = X

Next X

End Sub

img8

Explication du code:

Nous avons assigné X comme entier Pour X = 1 à 50 Étape 2; ceci commencera par 1 dans X jusqu’à 50 avec un incrément de 2 à chaque fois * Range (« C » & X) .Value = X; cette ligne stockera la valeur de X et passera de la plage C1 à C50

img9

Boucle 5 (VBA pour boucle en sens inverse avec instruction STEP)

Il n’est pas nécessaire que le compteur de la boucle For se déplace uniquement des valeurs faibles aux valeurs supérieures; à la place, la boucle For peut s’exécuter à l’envers, c’est-à-dire des valeurs élevées à inférieures.

Même si la valeur de Pas est avant 1 par défaut, cependant, elle peut être définie sur un nombre dans l’ordre inverse.

Sub Loop5()

' Fills cells from D1:D50 with values of X' --- Comment

' In this case X decreases by 1' --- Comment

Dim X As Integer, Row As Integer

Row = 1



For X = 50 To 0 Step -1

Range("D" & Row).Value = X

Row = Row + 1

Next X

End Sub

img10

Explication du code:

Nous avons assigné X & Row comme entier Row contient la valeur 1 For X = 50 to 0 Step -1; cela commencera de 50 avec décrémentation de 1 dans X jusqu’à 0 Range (« D » & Row) .Value = X; cette ligne stockera la valeur de X et passera de la plage D1 à D50

img11

Boucle 6 (Remplit une cellule sur deux en sens inverse avec STEP-2)

Dans l’exemple de boucle For ci-dessus, nous pouvons utiliser le pas et l’ordre pour voir si la boucle For fonctionne dans le sens avant ou arrière.

Sub Loop6()

' Fills every second cell from E1:E100 with values of X' --- Comment

' In this case X decreases by 2' --- Comment

Dim X As Integer, Row As Integer

Row = 1

For X = 100 To 0 Step -2

Range("E" & Row).Value = X

Row = Row + 2

Next X

End Sub

img12

Explication du code:

Nous avons assigné X & Row comme entier Row contient la valeur 1 For X = 100 to 0 Step -2; cela commencera de 100 avec décrémentation de 2 dans X jusqu’à 0 Range (« E » & Row) .Value = X; cette ligne stockera la valeur de X et passera de la plage E1 à E100

img13

Boucle 7 (Boucle For avec condition IF: remplit les cellules à partir d’une cellule spécifique) Cela remplira les cellules de la cellule F11 avec la valeur 11 jusqu’à ce que X remplisse la condition IF

Sub Loop7()

' Starts to fill cells F11:F100 with values of X' --- Comment

' This will exit from the loop after 50' --- Comment

Dim X As Integer

For X = 11 To 100

Range("F" & X).Value = X

If X = 50 Then

MsgBox ("Bye Bye")

Exit For

End If

Next X

End Sub

img14

Explication du code:

Nous avons assigné X comme entier Pour X = 11 à 100; commencera à partir de 11 avec incrément de 1 dans X jusqu’à ce que la condition satisfasse * Range (« F » & X) .Value = X; cette ligne stockera la valeur de X et passera à la plage F11 jusqu’à ce que la condition satisfasse

img15

  • Après avoir entré la valeur 50 dans la cellule F50, la boîte de message suivante sera affichée

Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]