VBA FOR LOOP (Pour Suivant, Pour Chacun)

Points clés

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]
pour-contre-debut-à-fin
  1. 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.
  2. Start : C’est une variable numérique qui stocke la valeur de départ du compteur.
  3. End : C’est une variable numérique qui stocke la valeur finale du compteur.
  4. 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.
  5. Instruction : C’est un ensemble de code que vous voulez exécuter à chaque itération de la boucle For Next.
  6. 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.

exemple-à-comprendre-pour-la-prochaine-boucle

Pour utiliser For Next Loop, vous pouvez suivre les étapes suivantes :

  1. Tout d’abord, vous devez déclarer une variable que vous pouvez utiliser pour stocker la valeur du compteur.
    declare-a-variable
  2. Ensuite, nous devons attribuer la valeur du compteur à la variable.
    assign-the-counter-value
  3. 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.
    write-code-for-loop
  4. À 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.
    code-that-can-add-serial-number
  5. À 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.

vba-for-next-loop-example-1

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.

attribuer une valeur numérique

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.

quand-vous-exécutez-un-instantané-de-code

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.

Syntaxe

Voici la syntaxe du VBA pour chaque boucle suivante :

For Each Object In Collection
[statements]
Next [object]
syntaxe-pour-la-vba-for-each-next-loop
  1. 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.
  2. Collection : C’est une collection d’objets dans laquelle vous voulez boucler.
  3. Instruction : ligne(s) de code que vous voulez exécuter dans chaque boucle à travers tous les objets de la collection.
  4. 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 :

  1. Tout d’abord, vous devez déclarer une variable à utiliser comme feuille de calcul.
    code-to-hide-the-all-sheets
  2. 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.
    for-each-mysheet-active-workbook-worsheets
  3. 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.
    vba-if-statement-to-test
  4. Au final, vous avez le mot-clé NEXT et « mySheet » la variable pour terminer le code de la boucle.
    next-keyword-and-mysheet

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

De cette façon, toutes les feuilles de calcul seront masquées.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *