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