PaliSkill
Introduction au VBA

Leçon 3 / 8 — Chapitre 2: Logique conditionnelle et boucles

For Each...Next : parcourir une collection

La boucle For classique (vue à la leçon précédente) répète un nombre de fois CONNU À L'AVANCE, en comptant de i à j. For Each...Next répond à un besoin différent : parcourir chaque élément d'une COLLECTION (toutes les feuilles d'un classeur, toutes les cellules d'une plage), sans se soucier de leur nombre exact.

La syntaxe

For Each element In collection
    ' instructions
Next element

Parcourir toutes les feuilles d'un classeur

Sub ListerFeuilles()
    Dim feuille As Worksheet
    Dim liste As String

    For Each feuille In ThisWorkbook.Worksheets
        liste = liste & feuille.Name & vbNewLine
    Next feuille

    MsgBox liste
End Sub

feuille prend successivement la valeur de chaque onglet du classeur, sans jamais avoir besoin de connaître leur nombre à l'avance — ajouter ou retirer un onglet ne casse jamais cette macro.

Parcourir les cellules d'une plage

Sub CompterCellulesVides()
    Dim cellule As Range
    Dim compteur As Integer
    compteur = 0

    For Each cellule In Range("A1:A10")
        If cellule.Value = "" Then compteur = compteur + 1
    Next cellule

    MsgBox compteur
End Sub

Exemple concret : un classeur regroupe une feuille par mois de l'année, un nombre qui varie selon l'avancement du projet. For Each feuille In ThisWorkbook.Worksheets traite chaque feuille présente, sans jamais avoir à ajuster manuellement une limite de boucle.

À vous de jouer : écrivez une macro avec For Each qui parcourt toutes les feuilles du classeur actif et compte combien il y en a.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 76 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès