La boucle For Each
Pas besoin de compteur quand on veut simplement passer sur chaque élément d'un ensemble. For Each prend les cellules, les feuilles ou les classeurs un par un, dans l'ordre, jusqu'au dernier.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Définition
For Each répète un bloc d'instructions pour chaque élément d'une collection : chaque cellule d'une plage, chaque feuille d'un classeur, chaque classeur ouvert.
02Syntaxe
Dim element As TypeDeLElement For Each element In collection ' instructions sur element Next element
| Pour parcourir | Variable | Collection |
|---|---|---|
| les cellules d'une plage | Dim c As Range | Range("A2:A100") |
| les feuilles du classeur | Dim ws As Worksheet | ThisWorkbook.Worksheets |
| les classeurs ouverts | Dim wb As Workbook | Workbooks |
| les valeurs d'un tableau VBA | Dim v As Variant | le nom du tableau |
03Exemples à copier
Chaque cellule d'une plage
Sub SignalerNegatifs() Dim c As Range For Each c In Range("C2:C500") If IsNumeric(c.Value) And c.Value < 0 Then c.Font.Color = RGB(200, 55, 45) End If Next c End Sub
Chaque feuille du classeur
Sub ListerFeuilles() Dim ws As Worksheet, ligne As Long ligne = 1 For Each ws In ThisWorkbook.Worksheets Worksheets("Sommaire").Cells(ligne, 1).Value = ws.Name ligne = ligne + 1 Next ws End Sub
Seulement les cellules sélectionnées
Sub Majuscules() Dim c As Range For Each c In Selection If Not c.HasFormula Then c.Value = UCase(c.Value) Next c End Sub
Sur une plage de plusieurs colonnes, For Each lit ligne par ligne : A1, B1, C1, puis A2, B2, C2, et ainsi de suite.
04Pièges à éviter
Supprimer des lignes à l'intérieur d'un For Each sur une plage fait sauter des cellules. Pour supprimer, utilisez For Next en partant du bas avec Step -1.
For Each c In Range("A:A") parcourt plus d'un million de cellules. Limitez la plage à la zone utile avec la dernière ligne.
Sans As Range ou As Worksheet, la variable est un Variant : le code fonctionne, mais l'éditeur ne propose plus la saisie semi-automatique des propriétés.
05For Each ou For Next ?
For Each
Plus court et plus lisible pour traiter chaque élément de la même façon.
For Next
Indispensable dès qu'on a besoin du numéro de ligne, d'un pas particulier ou d'un parcours à l'envers.
06Questions fréquentes
Comment parcourir chaque cellule d'une plage en VBA ?
For Each répète un bloc d'instructions pour chaque élément d'une collection : chaque cellule d'une plage, chaque feuille d'un classeur, chaque classeur ouvert.
Quel est le piège le plus fréquent avec la boucle For Each ?
Supprimer pendant le parcours. Supprimer des lignes à l'intérieur d'un For Each sur une plage fait sauter des cellules. Pour supprimer, utilisez For Next en partant du bas avec Step -1.
La fiche « Boucle For Each » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA