Vous souhaitez automatiser des tâches répétitives dans Excel à l'aide de VBA? Apprenez à utiliser la boucle For Each pour manipuler efficacement les données dans vos feuilles de calcul.

Les boucles et VBA vont de pair, et pour une bonne raison aussi. Lorsque vous traitez avec des objets Microsoft Office tels que des classeurs, des feuilles de calcul et des plages, les boucles peuvent vous aider à basculer entre chacun d'eux avec une relative facilité.

Alors que plus ou moins toutes les boucles VBA fonctionnent bien avec les objets, la boucle "pour chaque" est l'une des meilleures options pour travailler avec les collections d'objets. Si vous débutez avec Excel VBA et que vous cherchez à maîtriser la boucle pour chaque, vous pouvez apprendre rapidement de certains de ces exemples. Voici tout ce que vous devez savoir sur cette boucle par excellence.

Pour la syntaxe de chaque boucle

La syntaxe de chaque boucle est assez similaire à la boucle for habituelle dans Excel VBA. Voici la syntaxe :

Pour chaque variable_name dans object_collection

[déclaration]

[déclaration]

[déclaration]

Nom_variable suivant

La boucle commence par le mot-clé « pour chaque »; vous pouvez utiliser n'importe quel nom de variable, suivi de la collection d'objets. L'objet dans la boucle pour chaque peut être des cellules, des plages, des feuilles et même des classeurs. Telle est la beauté de cette boucle; il vous donne la possibilité de travailler avec différentes collections Excel.

La boucle parcourt chaque valeur de collection et stocke la référence dans le nom de variable défini. Après l'exécution, VBA exécute les instructions stockées dans la boucle et passe à l'objet suivant de la collection (le suivant mot-clé est utile ici). Comprenons la structure du code avec un exemple de base.

Comment utiliser la boucle For Each dans Excel VBA

Supposons que vous souhaitiez imprimer un nombre dans les cellules A1 à A10. La meilleure approche consiste à utiliser la boucle for each avec la fonction range et à laisser le code faire le nécessaire. Voici comment vous pouvez effectuer cette tâche simple :

  1. Ouvrez l'éditeur de code VBA en appuyant sur Autre + F11.
  2. Insérez un module en cliquant sur le Module option au sein de la Insérer languette.
  3. Créez une sous-routine à l'aide de la commande sub() dans la fenêtre du module de l'éditeur de code. Assurez-vous d'attribuer un nom significatif à la sous-routine. Pour cet exemple, vous pouvez utiliser le nom for_each_loop.

Maintenant que les bases sont éliminées, il est temps de commencer à écrire le code. Dans la sous-routine, tapez les commandes suivantes :

Assombrir la cellule comme gamme

Pour chaque cellule dans Feuilles("Feuille1").Gamme("A1:A10")

cellule.valeur = 10

Cellule suivante

Lorsque le code s'exécute, le c variable stockera la valeur de A1. Ensuite, lorsqu'il passe à l'instruction dans la boucle, il évalue la commande et entre une valeur de 10 dans la cellule définie, c'est-à-dire la cellule A1.

Enfin, lorsqu'il passe au mot-clé Next, il passe à la valeur suivante, c'est-à-dire la cellule A2. La boucle s'exécute jusqu'à ce qu'elle atteigne la cellule A10. Voici la sortie finale :

Utilisation de la boucle avec des objets: cellules, feuilles et classeurs

Excel a trois principaux types d'objets avec lesquels vous travaillez régulièrement. Ce sont des cellules, des feuilles et des classeurs. Voici comment vous pouvez utiliser la boucle avec les trois types d'objets.

Travailler avec des cellules et des boucles ensemble

Supposons que vous souhaitiez ajouter une valeur et certaines conditions de mise en forme à une plage de cellules dans Sheet1. Dans un premier temps, vous devez définir les conditions dans la boucle, suivies des commandes de formatage.

Tapez le code suivant dans une sous-routine.

Sous for_each_loop()

Faible c Comme Gamme

Pour chaque c dans les feuilles("Feuille1").Gamme("A1:A10")

Avec c

.Valeur = 10

.Police de caractère. Couleur = vbRouge

.Police de caractère. Gras = Vrai

.Police de caractère. Barré = Vrai

FinAvec

Suivant c

Fin Sous

Le avec La fonction est utile lors de l'exécution de plusieurs fonctions avec un objet spécifique. Puisque vous souhaitez effectuer une série de tâches avec la variable c, vous pouvez toutes les combiner à l'aide d'une fonction with..end with .

La boucle assimile la valeur de c à chaque valeur de cellule et entre la valeur 10. De plus, il change la couleur de la cellule en rouge, met la valeur en gras et la barre. Une fois qu'il a terminé toutes les étapes, il passe à la valeur définie suivante dans la plage.

Utilisation de la boucle pour contrôler les feuilles

Comme dans l'exemple ci-dessus, vous pouvez utiliser la boucle for each pour contrôler les feuilles. Que diriez-vous de changer le nom de Sheet1 en Sheet3 à l'aide de VBA ?

Vous pouvez utiliser le code suivant pour renommer une feuille de calcul existante dans Excel à l'aide de VBA :

Sous for_each_loop_sheets()

PourChaquemerdeDansCe classeur.Feuilles

Si merde. Nom = "Feuille1" Alors

merde. Nom = "Feuille3"

FinSi

Merde suivante

Fin Sous

Le code parcourt chaque feuille du classeur et vérifie le nom de chaque feuille. S'il rencontre le nom Sheet1, il le remplace par Sheet3. Il progresse à travers les feuilles restantes, le cas échéant, dans le classeur. Une fois que l'exécution du code atteint la dernière feuille, elle sort de la boucle et de la sous-routine.

Parmi d'autres utilisations courantes, vous pouvez fusionner plusieurs feuilles de calcul à l'aide de VBA et mettre à jour le contenu d'une seule feuille à l'aide de boucles.

Basculer dans les classeurs avec la boucle

Enfin, vous pouvez utiliser la boucle for each pour parcourir différents classeurs et effectuer des tâches spécifiques. Démontrons cette fonction avec un exemple.

Vous pouvez utiliser les commandes VBA pour ajouter trois nouveaux classeurs et fermer tous ceux qui sont ouverts ensemble. Voici comment procéder :

Sous loop_wrkbook()

Dim classeur comme classeur

Cahiers.Ajouter

Cahiers.Ajouter

Cahiers.Ajouter

Pour chaque classeur dans les classeurs

cahier de travail.Fermer

Livre de travail suivant

Fin Sous

Le code ci-dessus fermera également votre classeur de macros; assurez-vous d'avoir enregistré vos codes avant d'exécuter ce code.

Étant donné que les boucles ont de multiples usages, vous pouvez également consolider les données de plusieurs classeurs dans un seul classeur.

Utilisation d'une instruction IF imbriquée avec la boucle

Comme dans l'exemple ci-dessus, vous pouvez utiliser une instruction IF dans la boucle pour vérifier des conditions spécifiques. Modifions la couleur d'arrière-plan de la cellule en fonction des valeurs de la cellule.

Il y a quelques nombres aléatoires dans les cellules A1: A20. Vous pouvez écrire une boucle pour parcourir chaque cellule donnée de la plage; si la valeur de la cellule est inférieure à 10, la couleur de la cellule doit passer au rouge. Si la valeur de la cellule dépasse 10, elle doit devenir verte. Utilisez le code suivant à cet effet :

Sous loop_w_if()

Faible c Comme Gamme

Pour chaque c dans les feuilles("Feuille4").Gamme("A1:A20")

Sic.Valeur < 10 Alors

c. Intérieur. Indice de couleur = 3

Autre: C. Intérieur. IndexCouleur = 4

FinSi

Suivant c

Fin Sous

Voici à quoi ressemble la sortie :

Utilisation de boucles dans Excel VBA

Excel VBA n'est pas limité à la boucle pour chaque. Il existe une variété de boucles utiles qui vous permettent d'exécuter facilement différentes fonctions. Dites adieu aux tâches manuelles banales, car les boucles de VBA comme la boucle for, do while et do until les boucles interviennent pour vous faciliter la vie.