VBA FOR LOOP (Pour Suivant, Pour Chacun)
Points clés
- Les boucles For VBA sont des types de boucles fixes.
- Il n’est pas possible d’utiliser l’une de ces boucles lors de l’enregistrement d’une macro .
Pour la boucle suivante
VBA FOR NEXT est une boucle fixe qui utilise un compteur pour exécuter des itérations. En termes simples, vous devez spécifier le nombre de fois que vous souhaitez exécuter la boucle, et une fois qu’elle atteint ce nombre de boucles, elle s’arrêtera automatiquement. C’est pourquoi il s’agit d’une boucle fixe et la plus populaire parmi les développeurs VBA.
Syntaxe
Voici la syntaxe de la boucle VBA For Next :
For counter = Start To End [Step stepsize]
[statements]
Next [counter]
- Compteur : C’est une variable qui stocke le nombre de répétitions et augmente sa valeur à chaque répétition. Par exemple, si la boucle en est à sa cinquième répétition, la valeur du compteur sera de cinq, et une fois que la boucle exécute l’instruction pour la cinquième itération, la valeur du compteur passe à six.
- Start : C’est une variable numérique qui stocke la valeur de départ du compteur.
- End : C’est une variable numérique qui stocke la valeur finale du compteur.
- Taille de pas : Cette variable spécifie une grande augmentation ou diminution de la valeur du compteur. Par défaut, la taille du pas est de un, mais vous pouvez également utiliser n’importe quelle valeur positive ou négative.
- Instruction : C’est un ensemble de code que vous voulez exécuter à chaque itération de la boucle For Next.
- Suivant : C’est l’instruction de fin pour une itération de la boucle et utilise la valeur du compteur pour dire à VBA de répéter la boucle et une fois que le compteur atteint la valeur de fin, il termine la boucle.
Exemple à comprendre pour la prochaine boucle
Pour comprendre comment l’utiliser pour la boucle suivante, écrivons un code simple pour ajouter des numéros de série dans une colonne.
Permettez-moi d’élaborer un peu plus : nous devons écrire un code qui peut aller de la cellule sélectionnée aux 10 cellules suivantes une par une et ajouter des numéros de série uniquement dans l’instantané ci-dessous.
Pour utiliser For Next Loop, vous pouvez suivre les étapes suivantes :
- Tout d’abord, vous devez déclarer une variable que vous pouvez utiliser pour stocker la valeur du compteur.
- Ensuite, nous devons attribuer la valeur du compteur à la variable.
- Il est maintenant temps d’écrire du code pour la boucle, donc dans la première ligne, vous devez utiliser la variable compteur et définir les valeurs de début et de fin. Ici, dans ce code, vous avez la variable « i » comme valeur de fin.
- À partir de là, vous devez écrire du code qui peut ajouter les numéros de série dans la cellule active, puis passer à la cellule suivante. Au fur et à mesure que la valeur du compteur augmente à chaque itération, vous pouvez l’utiliser pour entrer le numéro de série dans la cellule active et après cela, vous pouvez utiliser le décalage pour déplacer la sélection vers la cellule suivante vers le bas.
- À la fin, utilisez le mot-clé next et la variable counter pour terminer le code de la boucle.
Sub AddSerialNumbers()
Dim i As Integer
i = 10
For i = 1 To i
ActiveCell.Value = i
ActiveCell.Offset(1, 0).Activate
Next i
End Sub
Vous pouvez voir dans l’instantané ci-dessous, lorsque j’exécute ce code, il commence à partir de la cellule sélectionnée en entrant un numéro de série, puis passe à la cellule suivante à chaque itération.
Comme vous le savez, For Next est une boucle fixe et dans ce code, lorsque vous affectez une valeur numérique, il indique à VBA d’exécuter la boucle ce nombre de fois.
Et vous pouvez voir l’instantané ci-dessous que j’ai pris dans la deuxième itération de la boucle où la valeur de la variable de compteur « i » est de deux.
Le point que j’essaie de faire valoir est que la variable de comptage change sa valeur à chaque itération et entre cette valeur dans la cellule active, puis le décalage active la cellule suivante vers le bas qui termine une itération.
Au final, le mot-clé « Suivant » c’est VBA pour revenir à la première ligne de la boucle et la répéter. Comme vous l’avez vu dans la syntaxe de For Next, vous pouvez également utiliser une valeur de pas dans la boucle pour faire fonctionner le compteur en fonction de cela.
Donc, si vous utilisez deux comme valeur d’étape, le code ressemblerait à ce qui suit.
Sub AddSerialNumbers()
Dim i As Integer
i = 10
For i = 1 To i Step 2
ActiveCell.Value = i
ActiveCell.Offset(1, 0).Activate
Next i
End Sub
Et lorsque vous exécutez ce code, il y aura sur l’activité quelque chose comme l’instantané ci-dessous.
Lorsque vous utilisez une valeur de pas (comme l’étape 2, que vous avez utilisée dans le code ci-dessus), VBA ignore chaque 2e itération dans la boucle, et comme vous pouvez le voir, vous avez cinq nombres avec la différence d’un dans chaque nombre.
Remarque : Dans l’exemple ci-dessus, vous avez utilisé « i » comme variable de compteur, mais vous pouvez également utiliser un nom différent selon votre convenance.
Pour chaque boucle suivante
VBA FOR EACH NEXT est une boucle fixe qui peut parcourir tous les objets d’une collection. Dans For Each Next, vous n’avez pas besoin de spécifier le nombre d’itérations. Au lieu de cela, vous pouvez spécifier une collection d’objets, et il pourra parcourir tous ces objets un par un.
Par exemple : si vous souhaitez parcourir toutes les cellules d’une plage. Dans ce cas, la plage est la collection et les cellules sont les objets que vous avez.
Syntaxe
Voici la syntaxe du VBA pour chaque boucle suivante :
For Each Object In Collection
[statements]
Next [object]
- Objet : Il représente le seul objet de la collection d’objets dans lequel vous bouclez. A chaque itération, passe d’un objet à l’autre.
- Collection : C’est une collection d’objets dans laquelle vous voulez boucler.
- Instruction : ligne(s) de code que vous voulez exécuter dans chaque boucle à travers tous les objets de la collection.
- Next : C’est l’instruction de fin d’une itération de la boucle et indique à VBA de passer à l’objet suivant de la collection.
Exemple pour comprendre la boucle For Each Next
Pour comprendre la boucle For Each Next, écrivons un code pour masquer toutes les feuilles autres que la feuille de calcul active. Ce code vérifiera le nom de chaque feuille de calcul et le fera correspondre au nom de la feuille de calcul active et le masquera s’il ne correspond pas.
Pour utiliser la boucle For Each Next, vous pouvez suivre les étapes suivantes :
- Tout d’abord, vous devez déclarer une variable à utiliser comme feuille de calcul.
- Après cela, utilisez le mot-clé « Pour chaque », puis la variable « mySheet » pour la feuille, et utilisez « ActiveWorkbook.Worksheets » pour la collection de feuilles de calcul du classeur actif.
- Ensuite, vous devez utiliser l’instruction VBA IF pour tester si le nom de la feuille qui se trouve actuellement dans cette itération de boucle n’est PAS ÉGAL à la feuille de calcul active, et si cette condition est vraie, masquez la feuille qui se trouve maintenant dans l’itération de boucle.
- Au final, vous avez le mot-clé NEXT et « mySheet » la variable pour terminer le code de la boucle.
Code final :
Sub Hide_Other_Sheets()
Dim mySheet As Worksheet
For Each mySheet In ActiveWorkbook.Worksheets
If mySheet.Name <> ActiveSheet.Name Then
mySheet.Visible = False
End If
Next mySheet
End Sub
Lorsque vous exécutez ce code , il parcourt chaque feuille de calcul du classeur actif et fait correspondre son nom à la feuille de calcul active, et si le nom de la feuille de calcul ne correspond pas au nom de la feuille de calcul active, il le masque.
De cette façon, toutes les feuilles de calcul seront masquées.