Accueil/Cours gratuits/Bibliothèque VBA/Boucles/Boucle For Each
Cours VBA gratuit | Boucles

La boucle For Each

Gratuit, sans inscription Niveau 2 / 3 | Intermédiaire Lecture 7 min V1.2 | 29/10/2026

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 à imprimer

01Définition

En une phrase

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

Syntaxe générale
Dim element As TypeDeLElement
For Each element In collection
    ' instructions sur element
Next element
Pour parcourirVariableCollection
les cellules d'une plageDim c As RangeRange("A2:A100")
les feuilles du classeurDim ws As WorksheetThisWorkbook.Worksheets
les classeurs ouvertsDim wb As WorkbookWorkbooks
les valeurs d'un tableau VBADim v As Variantle nom du tableau

03Exemples à copier

Chaque cellule d'une plage

Mettre en rouge les montants négatifs
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

Lister toutes les feuilles
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

Passer la sélection en majuscules
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
💡 AstuceL'ordre de parcours

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

⚠️ PiègeSupprimer 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.

⚠️ PiègeUne plage trop large

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.

⚠️ PiègeOublier le type de la variable

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.

Pour les formateurs

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-05
Voir aussi

Toutes 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