Excel VBA pour chaque boucle

"Chaque" mot-clé est utilisé dans VBA avec la fonction "Pour". Cela signifie que pour chaque entité d'un tableau ou de la plage, répétez le processus en boucle. Fondamentalement, nous n'entrerons pas la plage de pas, c'est-à-dire de 1 à 5 ou 1 à 10, au lieu de cela, nous la mettons simplement comme indiqué dans la syntaxe ci-dessous.

Syntaxe:

Pour chaque nom d'objet dans la plage

Remarque: Vous devez avoir l'onglet Développeur dans la feuille de calcul Excel.

Si vous ne voyez pas l'onglet «Développeur» dans Excel, reportez-vous aux étapes ci-dessous.

Étape 1: cliquez sur Option de fichier .

Étape 2: Une liste déroulante apparaît, cliquez sur l'onglet Options .

Étape 3: Une fois que vous avez cliqué sur «Options», une boîte de dialogue apparaît comme illustré ci-dessous et cliquez sur l'option Personnaliser le ruban .

Étape 4: Lorsque nous faisons glisser vers le bas dans les options de ruban personnalisées, nous trouverons une option pour le développeur, nous devons cocher cette case qui nous permettra d'utiliser VBA dans Excel.

Comment utiliser pour chaque boucle dans VBA?

Vous trouverez ci-dessous les différents exemples à utiliser pour chaque boucle dans Excel à l'aide du code VBA.

Vous pouvez télécharger ce modèle Excel VBA pour chaque boucle ici - Modèle Excel VBA pour chaque boucle

VBA Excel pour chaque boucle - Exemple # 1

Nous prendrons un exemple simple de For Each Loop dans VBA. Supposons que ci-dessous soit l'ensemble des données dans VBA.

Suivez les étapes ci-dessous pour utiliser pour chaque boucle dans Excel VBA.

Étape 1: Cliquez sur l'onglet «Développeur» puis cliquez sur l'option «Visual Basic» sur le côté gauche (première option) comme indiqué ci-dessous.

Une fois que vous avez cliqué dessus, une nouvelle fenêtre apparaît comme illustré ci-dessous.

Vous remarquerez qu'il contient deux onglets sur le côté gauche, "Sheet1 (Sheet1)" et "ThisWorkbook". La seule différence est «Sheet1» lorsque vous souhaitez exécuter du code pour cette feuille particulière uniquement et dans «ThisWorkbook», nous pouvons écrire un code et l'exécuter qui peut être appliqué à l'ensemble du classeur Excel.

Étape 2: Double-cliquez sur «Sheet1 (Sheet1) et vous verrez un écran vide où nous devons écrire le code. Donnez un nom au sous-ensemble créé. Ici, nous avons donné le nom «Sub For_Each_Ex1 ()» comme indiqué dans la capture d'écran ci-dessous.

Code:

 Sub For_Each_Ex1 () End Sub 

C'est ainsi que nous créons un sous-ensemble et automatiquement «End Sub» apparaît. C'est par défaut la fonction d'Excel. Si «End Sub» n'apparaît pas, le code ne s'exécutera pas et générera une erreur.

Étape 3: Nous déclarerons les variables comme une plage.

Code:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range End Sub 

Ici, nous avons déclaré deux variables, "Earn" que nous utiliserons avec For Each et "Range1" comme plage de l'ensemble de données.

Étape 4: Maintenant, nous allons fixer une plage, c'est-à-dire une plage de données sur laquelle nous devons travailler en utilisant le mot-clé «Set» comme indiqué ci-dessous.

Code:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") End Sub 

Ici, nous avons fixé «Range1» à partir des cellules de plage A1 à A10, qui est notre ensemble de données.

Étape 5: Nous allons maintenant exécuter la boucle For en utilisant chaque mot clé.

Code:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") Pour chaque Earn In Range1 End Sub 

Ici, pour chaque valeur de Range, Earn obtiendra une valeur assignée car la boucle For est exécutée étape par étape.

Étape 6: Maintenant, nous allons utiliser le mot-clé «Msgbox» pour afficher chaque entrée de ligne dans la plage affectée.

Code:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") Pour chaque Earn In Range1 MsgBox Earn.Value End Sub 

Ici, «Earn.value» affichera la valeur dans la cellule, c'est-à-dire à partir de la première cellule de la plage.

Étape 7: Maintenant, nous voulons exécuter la valeur suivante dans la plage de cellules donnée, nous devons donc utiliser le mot-clé "Next" dans le code. Cela aidera à aller plus loin dans la plage et à afficher chaque entité dans la plage de cellules une par une.

Code:

 Sub For_Each_Ex1 () Dim Earn, Range1 As Range Set Range1 = Range ("A1: A10") Pour chaque Earn In Range1 MsgBox Earn.Value Next Earn End Sub 

Étape 8: Exécutez le code en appuyant sur F5 ou sur le bouton Exécuter et voyez la sortie.

Au moment où la ligne de code «Next Earn» est exécutée, «Earn.value» sera affecté avec la valeur de cellule suivante dans la plage. Un par un, cliquez sur «OK» et continuera à afficher chaque valeur dans la plage jusqu'à ce que la plage de valeurs soit terminée.

VBA Excel pour chaque boucle - Exemple # 2

Nous prendrons un autre exemple dans lequel nous afficherons le nom de chaque feuille dans un fichier Excel. Supposons que nous ayons des feuilles nommées comme ci-dessous dans le fichier Excel:

Comme nous remarquons qu'il y a environ 5 feuilles dans le fichier Excel et que nous devons afficher le nom de chacune une par une.

Nous allons écrire et exécuter le code dans la section «ThisWorkbook» comme souligné dans la case rouge ci-dessous:

Double-cliquez dessus et pendant que le volet de la fenêtre apparaît et commencez à y écrire le code. Suivez les étapes ci-dessous pour utiliser pour chaque boucle dans Excel VBA:

Étape 1: Nous allons écrire le code en attribuant un nom de sous-ensemble comme indiqué ci-dessous.

Code:

 Sous-nom de page () End Sub 

Étape 2: De plus, nous pouvons directement commencer à écrire l'instruction de boucle «For» sans déclarer la variable comme indiqué ci-dessous.

Code:

 Sous-nom de page () pour chaque sht dans l'application. 

Ici «sht» est notre variable1 qui par défaut est déclarée et «Application.sheets» signifie que dans le fichier, considérez toutes les feuilles. Application.fucntion spécifie que nous pouvons ajouter toute fonctionnalité ou fonction ou outil Excel à prendre en compte lors de l'exécution du code.

Étape 3: Maintenant, nous allons entrer la syntaxe de la boîte de message et avec elle, nous allons ajouter la syntaxe pour afficher le nom de la feuille comme indiqué ci-dessous:

Code:

 Sub pagename () For Each sht In Application.Sheets MsgBox "Le nom de la feuille est:" & sht.Name End Sub 

Ici, la déclaration que nous aimerions afficher est "Le nom de la feuille est:" puis nous tapons une esperluette (&) qui concatène la ligne de code et ensuite nous tapons "sht.Name" c'est-à-dire qu'elle sélectionnera la feuille à partir du premier feuille et afficher le nom.

Étape 4: Maintenant, nous devons répéter le processus d'affichage de chaque nom de feuille. Par conséquent, nous utiliserions «Next sht» comme indiqué ci-dessous:

Code:

 Sub pagename () For Each sht In Application.Sheets MsgBox "Le nom de la feuille est:" & sht.Name Next sht End Sub 

«Next sht» permettra au système de savoir cela, de considérer la feuille suivante et d'afficher son nom pour une exécution ultérieure.

Étape 6: exécutez le code en appuyant sur F5 ou sur le bouton Exécuter et voyez la sortie.

Une fois, vous cliquez sur "OK" et le code s'exécute plus loin, il affichera le nom de la feuille suivante. Le code s'exécutera jusqu'à ce qu'il n'y ait plus de feuilles affichées.

Excel VBA pour chaque boucle - Exemple # 3

Nous allons maintenant prendre un exemple où nous devons additionner toutes les valeurs dans un ensemble donné de données ou un tableau. Supposons ci-dessous l'ensemble des données :.

Suivez les étapes ci-dessous pour utiliser pour chaque boucle dans Excel VBA:

Étape 1: Déclarez d'abord le nom du sous-ensemble comme «eachadd ()» comme indiqué ci-dessous.

Code:

 Sub eachadd () End Sub 

Étape 2: Maintenant, nous allons déclarer les variables nécessaires, une sous forme d'entier nommé «total» dans laquelle nous continuons à additionner les valeurs des cellules une par une et fixons une plage de cellules qui contient les valeurs que nous devons ajouter.

Code:

 Sub eachadd () Dim total As Integer Dim Range1 As Range End Sub 

Étape 3: Après avoir déclaré la variable et la plage, nous devons fixer la plage à utiliser pour la boucle. Nous fixerons cette plage de cellules A1 à A10 en utilisant le mot-clé "Set" comme indiqué ci-dessous:

Code:

 Sub eachadd () Dim total As Integer Dim Range1 As Range Set Range1 = Range ("A1: A10") End Sub 

Étape 4: Nous pouvons maintenant commencer directement à utiliser la fonction de boucle For et déclarer directement la variable. Ici, nous utilisons «add1» comme variable et ce sera par défaut déclaré par le système.

Code:

 Sub eachadd () Dim total As Integer Dim Range1 As Range Set Range1 = Range ("A1: A10") Pour chaque add1 In Range1 End Sub 

Étape 5: Ajout de chaque entité dans la plage une par une et dans la variable déclarée «total». Par défaut, la valeur de «total» est initialement nulle. Et nous devons ajouter une par une la valeur des cellules et encore une fois cette somme doit ajouter à nouveau «total».

Code:

 Sub eachadd () Dim total en tant qu'entier Dim Range1 As Range Set Range1 = Range ("A1: A10") Pour chaque add1 In Range1 total = total + add1.Value End Sub 

L'instruction ci-dessus est exécutée de droite à gauche, c'est-à-dire que «add1.value» est la première valeur de cellule et l'ajoute à «total» qui est zéro. Par conséquent, la somme serait 0 + 1 qui est 1. Et cette somme comme 1 irait en «total» avant le signe «=». C'est un avantage car la formule s'exécute de gauche à droite.

Étape 6: Ajoutez maintenant «Next add1» qui aidera maintenant à considérer la prochaine valeur de cellule de la plage de données et ajoutez cette valeur dans la variable «total» comme indiqué ci-dessous.

Code:

 Sub eachadd () Dim total comme entier Dim Plage1 comme plage Set Range1 = Range ("A1: A10") Pour chaque add1 In Range1 total = total + add1.Value Next add1 End Sub 

Étape 6: Appuyez sur "F8" pour exécuter le code par chaque ligne. De plus, nous pouvons voir la valeur de «total» dans la capture d'écran ci-dessous.

De même, jusqu'à ce que la plage de cellules soit dépassée, la boucle for continuera d'exécuter cette somme d'un tableau.

Étape 7: Maintenant, nous allons utiliser le mot clé "Msgbox".

Code:

 Sub eachadd () Dim total As Integer Dim Range1 As Range Set Range1 = Range ("A1: A10") For Each add1 In Range1 total = total + add1.Value Next add1 MsgBox "Final Summation:" & total End Sub 

Étape 8: Exécutez le code en appuyant sur F5 ou sur le bouton Exécuter et voyez la sortie.

Choses dont il faut se rappeler

  • «Chaque» mot-clé n'est utilisé la plupart du temps qu'en cas d'utilisation de la fonction VBA For Loop uniquement. Sinon, il a une utilisation limitée dans Excel VBA.
  • L'avantage pour le mot-clé "Each" est seulement que nous n'avons pas de déclarer des étapes comme de 1 à x dans l'instruction "For".

Articles recommandés

Ceci est un guide de VBA pour chaque boucle. Ici, nous discutons de l'utilisation de For Each Loop dans Excel à l'aide du code VBA ainsi que des exemples pratiques et un modèle Excel téléchargeable. Voici quelques articles Excel utiles liés à VBA -

  1. Boucle VBA Do While
  2. Changer de colonne dans Excel
  3. VBA Break for Loop
  4. Compter les noms dans Excel
  5. Comment exécuter le code VBA?

Catégorie: