Boucles VBA Excel

Les boucles peuvent être considérées comme le composant le plus fonctionnel de VBA et peuvent également être considérées comme le cœur des macros. Ils vous aident généralement à réduire le nombre de lignes dans votre code et à effectuer le travail en quelques minutes, ce qui peut prendre des heures à un être humain.

Dans la vie de tous les jours, un programmeur arrive avec de tels cas où il doit exécuter le même ensemble de code encore et encore. Cela s'appelle le bouclage. Évidemment, chaque fois que vous exécutez le même code, vous obtiendrez à peu près le même résultat avec un changement fractionnaire dans la variable. La boucle présente un large éventail d'avantages, mais le plus important est l'automatisation. Cela aide à automatiser les choses.

Si vous n'avez jamais utilisé de script VBA auparavant, vous pouvez simplement ouvrir un classeur Excel et appuyer sur Alt + F11 . Il ouvrira un projet VBA.

Approfondissons à l'intérieur.

Supposons que nous voulions imprimer de 1 à 10 numéros en une seule fois. Nous pouvons le faire avec le code suivant.

Code:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Si vous pouvez obtenir rapidement le code, j'ai ajouté Debug.Print un par un pour imprimer les nombres de 1 à 10. Après avoir exécuté le code, nous pouvons voir la sortie dans la fenêtre immédiate. Pour ouvrir la fenêtre immédiate, appuyez sur Ctrl + G n'importe où dans Excel.

Exécutez le code à l'aide de la touche F5 ou manuellement comme indiqué dans la capture d'écran ci-dessous. Vérifions donc la sortie de ce code.

Types de boucles VBA dans Excel

En tant que programmeur, vous n'aurez jamais envie d'écrire des lignes répétitives qui sont sur le point de donner le même résultat. Vous souhaitez l'automatiser. Par conséquent, nous verrons différentes boucles Excel VBA et comment les utiliser à l'aide de quelques exemples.

Type # 1 - VBA pour la prochaine boucle

Pour la boucle VBA suivante, nous pouvons parcourir la plage de cellules et effectuer la même tâche pour chaque cellule spécifiée dans la boucle. Le numéro de départ et le numéro de fin doivent être indiqués ici.

code:

 Sub loop1 () Pour i = 1 à 10 cellules (i, 1) .Value = i Next i End Sub 

Ce code donne exactement la même sortie que la précédente. Cependant, la chose la plus remarquable dans ce code est la réduction d'un certain nombre de lignes. Nous avons réduit le code à 12 lignes à un simple code à 5 lignes.

Dans ce code, loop1 est le nom de la macro. La boucle for commence à partir de i = 1, elle imprime la valeur de i (c.-à-d. 1) sous la cellule Excel et à Next, elle retourne au début de la boucle for et fait i = 2 imprime la valeur de i (c.-à-d. 2) dans la cellule suivante et ainsi de suite jusqu'à ce que le code atteigne sa dernière valeur, c'est-à-dire 10. Dès que le code atteint la dernière valeur de i (10), le code se termine lui-même en raison de la non-disponibilité de toute valeur entière supérieure à 10.

Exécutez le code à l'aide de la touche F5 ou manuellement. Vous pouvez donc voir la sortie comme ci-dessous.

Type # 2 - VBA pour boucle avec pas en avant

Comme vous l'avez vu dans l'exemple de boucle précédent, j'avais une augmentation en 1 étape. Par défaut, la valeur de l'étape est considérée comme 1 dans VBA. Cependant, est-il possible de définir une étape de notre choix? Supposons que vous ne souhaitiez voir que les nombres pairs compris entre 1 et 20. Comment cela peut-il être fait?

Comme le suggèrent les mathématiques générales, les nombres qui sont à une distance de 2 les uns des autres (à partir d'un premier nombre pair 2) sont considérés comme des nombres pairs, non?

Nous appliquerons la même logique. Voir ci-dessous le code pour votre référence.

Code:

 Sub ForwardStep () For i = 2 to 20 Step 2 Cells (i, 1) .Value = i Next i End Sub 

Pour les valeurs à partir de 2, cette boucle permet d'imprimer 2, 4, 6, 8… 20 dans les cellules Excel suivantes. L'étape 2 a explicitement donné pour qu'à partir du numéro 2, le code passe au numéro suivant à l'étape 2 (c'est-à-dire que 4 sera imprimé) et ainsi de suite. Ce processus se poursuivra jusqu'à ce que 20 se produisent dans une cellule. Dès que 20 se produit dans une cellule, la boucle se terminera automatiquement.

Exécutez le code à l'aide de la touche F5 ou manuellement. Vous pouvez donc voir la sortie comme ci-dessous.

Type # 3 - VBA pour boucle avec pas en arrière

De la même manière que pour la boucle avec pas en avant, nous pouvons utiliser pour la boucle avec un pas en arrière. Par exemple, que se passe-t-il si nous définissons notre pas en arrière sur -2 et exécutons une boucle for à partir des valeurs 20 à 2?

Nous verrons comment cela fonctionne.

code:

 Sub BackwardStep () For i = 20 To 2 Step -2 Debug.Print i Next i End Sub 

Après avoir exécuté le code, nous pouvons voir la sortie dans la fenêtre immédiate. Pour ouvrir la fenêtre immédiate, appuyez sur Ctrl + G n'importe où dans Excel.

Comme nous avons donné un point de départ de la boucle à 20 et un point de fin à 2 à l'étape -2, la boucle commence à 20 et à l'étape de -2, elle passe au numéro suivant qui est -18 et ainsi de suite. Dès que la boucle atteint la valeur 2, elle se termine automatiquement et la dernière valeur sera imprimée en 2.

Type # 4 - VBA imbriqué pour boucle

Nous pouvons également imbriquer la boucle ForFor. Cependant, il n'est pas suggéré de faire une imbrication de la même boucle plus de trois fois dans un code (cela peut être considéré comme une erreur de logique).

Veuillez consulter le code ci-dessous pour la boucle imbriquée.

Code:

 Sub NestedFor () For i = 1 To 10 For j = 1 To 2 Cells (i, j) .Value = i * j Next j Next i End Sub 

Dans cet exemple, à i = 1 et j = 1, la macro place la valeur de i * j (1 * 1) dans l'intersection de la ligne i = 1 et de la colonne j = 1 (c'est-à-dire la cellule A1) et passe à la valeur suivante de j (2) en gardant i = 1. À l'intersection de la ligne i = 1 et de la colonne j = 2 (c'est-à-dire la cellule B1), la macro entre la valeur de I * j (1 * 2). La boucle ignore la valeur suivante de j car j ne varie que de 1 à 2 et passe à la valeur suivante de i.

Pour i = 2 et j = 1, la macro entre la valeur de i * j (2 * 1) dans l'intersection de la 2 e ligne et de la 1 re colonne (c'est-à-dire la cellule A2) et continue. Jusqu'à la plage de i et j.

Exécutez le code à l'aide de la touche F5 ou manuellement comme indiqué dans la capture d'écran ci-dessous. Vous pouvez donc voir la sortie comme ci-dessous.

Type # 5 - Boucle VBA Do While

La boucle Do While est l'une des boucles les plus intéressantes de VBA. Il vous permet de vérifier la condition et d'écrire la sortie (DO), lorsqu'une certaine condition ou un ensemble de conditions sont remplies (ou la ou les conditions sont / sont VRAIES).

Voir le code ci-dessous:

Code:

 Sub do_whileloop () Dim i As Integer i = 1 Do While i <= 10 Cells (i, 1) .Value = i * ii = i + 1 Loop End Sub 

Cette boucle fonctionne comme ci-dessous:

Pour les valeurs de i de 1 (i = 1 initialement) à 10, il calcule, i * i (c'est-à-dire la valeur au carré pour chaque valeur entière de i) et l'introduit sous la cellule 1 à 10 respectivement. La sortie n'est rien d'autre que les valeurs au carré des entiers 1 à 10. Veuillez regarder de plus près Loop sous ce code. Il est obligatoire de l'ajouter, sinon le système déclenchera une erreur.

Exécutez le code à l'aide de la touche F5 ou manuellement. Vous pouvez donc voir la sortie comme ci-dessous.

Ce sont quelques-uns des exemples de boucle VBA que j'ai essayé de prendre soin dans cet article. J'espère que ce sera assez précis pour effacer certains concepts.

Choses dont il faut se rappeler

  • Lorsque vous utilisez for loop avec un pas en arrière, assurez-vous que votre numéro de départ doit être supérieur à votre numéro de fin et vice versa.
  • Sous Do while loop, assurez-vous que vous utilisez Loop pour fermer le do while avant de terminer l'intégralité du code VBA. Sinon, le système renvoie une erreur de compilation avec le message d'erreur «Do Without Loop».

Vous pouvez télécharger ce modèle Excel de boucles VBA ici - Modèle Excel de boucles VBA

Articles recommandés

Cela a été un guide pour les boucles VBA Excel. Ici, nous avons discuté des types de boucles VBA Excel et comment les utiliser avec des exemples pratiques et un modèle Excel téléchargeable. Vous pouvez également consulter nos autres articles suggérés -

  1. Fonction VBA dans Excel
  2. Fonction VBA VLOOKUP
  3. Raccourcis clavier Excel
  4. Formule de centile Excel

Catégorie: