VBA pour chaque boucle

Excel VBA pour chaque boucle

VBA For Each Loop parcourt toute la collection d'objets ou d'éléments et effectue un ensemble d'activités similaire. Il prendra en considération tous les objets spécifiés disponibles et effectuera une activité instruite dans chaque objet.

Dans VBA, il est obligatoire de comprendre les boucles dans VBA. Une boucle vous permet de mener le même type d'activité pour de nombreuses cellules ou objets dans Excel. Dans l'article d'aujourd'hui, nous allons nous concentrer sur le mécanisme For Each Loop.

Syntaxe

For Each Loop peut parcourir toute la collection d'objets ou d'éléments. Une collection n'est rien d'autre que «Tous les classeurs ouverts», «Toutes les feuilles de calcul d'un classeur», «Toute la collection de formes et de graphiques du classeur».

Regardons la syntaxe.

Pour chaque objet de la collection Que faire? Objet suivant

Par exemple, vous avez 10 feuilles dans votre classeur et vous souhaitez masquer toutes les feuilles de calcul sauf celle dans laquelle vous vous trouvez. Pouvez-vous masquer manuellement, oui vous pouvez, mais que se passe-t-il si vous avez 100 feuilles comme ça n'est pas si ennuyeux et le temps -tâche consommatrice à faire. Vous pouvez le faire en utilisant pour chaque boucle.

Comment utiliser For Each Loop dans VBA? (Exemples)

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

Exemple # 1 - Insérer le même texte dans toutes les feuilles

Nous verrons comment utiliser FOR EACH en VBA avec un exemple simple. Supposons que vous ayez 5 feuilles de calcul dans un classeur et que vous souhaitiez insérer le mot «Bonjour» dans toutes les feuilles de calcul de la cellule A1.

Nous pouvons le faire avec POUR CHAQUE BOUCLE. Une chose dont vous devez vous souvenir ici est que nous effectuons réellement cette activité dans chaque feuille de calcul, pas dans la même feuille de calcul. Suivez les étapes ci-dessous pour écrire le code VBA.

Étape 1: Démarrez la macro Excel.

Code:

 Sub For_Each_Example1 () End Sub 

Étape 2: Puisque nous nous référons aux feuilles de calcul, déclarez la variable comme «Feuille de calcul».

Code:

 Sub For_Each_Example1 () Dim Ws As Worksheet End Sub 

Étape 3: En utilisant maintenant POUR CHAQUE BOUCLE, nous devons faire référence à chaque feuille de calcul dans le classeur actif.

Code:

 Sub For_Each_Example1 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Next Ws End Sub 

Étape 4: Maintenant, écrivez ce que nous voulons faire dans chaque feuille de travail. Dans chaque feuille de calcul, nous devons mettre le mot «Bonjour» dans la cellule A1.

Code: 

 Sub For_Each_Example1 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Range ("A1"). Value = "Hello" Next Ws End Sub 

Étape 5: Maintenant, exécutez ce code manuellement via l'option ou appuyez sur la touche de raccourci F5, peu importe le nombre de feuilles que vous avez, il insérera le mot «Bonjour» dans toutes les feuilles de calcul.

Exemple # 2 - Masquer toutes les feuilles

Comme indiqué précédemment dans l'article, que se passe-t-il si vous avez des centaines de feuilles à masquer sauf celle dans laquelle vous vous trouvez. Utilisation Pour chaque boucle, nous pouvons masquer toutes les feuilles dans Excel.

Étape 1: démarrez la macro avec votre nom.

Code:

 Sub For_Each_Example2 () End Sub 

Étape 2: Déclarez la variable comme « Ws ».

Code:

 Sub For_Each_Example2 () Dim Ws As Worksheet End Sub 

Étape 3: Maintenant, dans chaque feuille de calcul, vous devez masquer la feuille.

Code:

 Sub For_Each_Example2 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws End Sub 

Étape 4: Mais si vous exécutez le code ci-dessus, il essaiera de masquer toutes les feuilles, mais Excel a besoin d'au moins une feuille pour être visible. Nous devons donc dire quelle feuille ne pas cacher.

Code:

 Sub For_Each_Example2 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If Ws.Name "Main Sheet" Then Ws.Visible = xlSheetVeryHidden End If Next Ws End Sub 

Le symbole d'opérateur signifie différent de dans VBA .

Ainsi, le code indique que lorsque vous parcourez toutes les feuilles de calcul du classeur actif, masquez uniquement si le nom de la feuille n'est pas égal au nom de la feuille principale.

Cela peut être fait en utilisant l'instruction IF dans VBA. Écrivez le code comme IF Ws.Name “Main Sheet” Puis masquez ou s'il est égal au nom de la feuille “Main Sheet” alors ne le cachez pas.

Étape 5: Exécutez maintenant le code à l'aide de la touche F5 ou manuellement, puis, il masquera toute la feuille de calcul sauf celle nommée «Feuille principale».

Exemple # 3 - Afficher toutes les feuilles

Nous avons vu comment masquer toutes les feuilles sauf celle dans laquelle nous nous trouvons. De même, nous pouvons également afficher toutes les feuilles de calcul.

Nous avons juste besoin de changer le code de xlSheetVeryHidden à xlSheetVisible.

Code:

 Sub For_Each_Example3 () Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Visible = xlSheetVisible Next Ws End Sub 

Here we don’t need the IF condition because we are unhiding all the sheets. If you don’t want to unhide any specific sheet then you can use the IF condition and supply the sheet name.

Example #4 – Protect and UnProtect All the Sheets

Protect All Sheets: We can protect all the sheets in the workbook with just a piece of code. All the code is the same only thing we need to do here is instead of Ws. Visible we need to put the code Ws. Protect and type the password.

Code:

 Sub For_Each_Example4() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Protect Password:="Excel@2019" Next Ws End Sub 

Unprotect All the Sheets: On a similar note, using vba we can also unprotect all sheets that where protected in the workbook. We just need to put the word Unprotect and password.

Code:

 Sub For_Each_Example6() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Unprotect Password:="Excel@2019" Next Ws End Sub 

Things to Remember

  • Each is for the collection of objects.
  • It will consider all the specified objects in the specified workbook.
  • While declaring the variable we need to which object we are referring to. For example Worksheet, Workbook, Chart, etc.