La boucle For en VBA

A quoi ça sert de coder une boucle For en VBA ? Avant tout à répéter un nombre de fois donné des instructions. Oui mais encore ? Tout dépend du contexte et des besoins mais imaginons que sous Excel vous ayez besoin de balayer un tableau pour en analyser et exploiter les données. Facile à mettre en oeuvre, la boucle For vous sera d’un grand secours puisqu’elle permettra de répéter le traitement des données que vous souhaitez effectuer pour chaque ligne de votre tableau.

Formation Excel VBA

Réitérer avec la boucle For

La boucle For permet donc de répéter l’éxécution d’instructions (ou une seule) un certain nombre de fois. On parle ici d’itérations. Sachant que le nombre d’itérations est fonction d’une borne de départ et d’une borne d’arrivée ainsi que du pas spécifié. Pour que tout ceci soit plus explicite, voici la syntaxe de la boucle For.

For i = 1 to 5 step 2

 ....
 diverses instructions
 ....

Next i
  • i est une variable numérique qui fait office d’indice pour l’éxécution de la boucle For. En fonction de sa valeur, la macro exécutera les instructions contenues dans la boucle ou pas.
  • La borne de départ a pour valeur la valeur 1.
  • La borne d’arrivée a pour valeur 5.
  • step 2 signifie que i va être incrémenté de 2 à chaque itération. A noter que le pas peut prendre des valeurs entières signées (positive ou négative). S’il n’est pas spécifié alors il a pour valeur 1 (majorité des cas).

D’après notre exemple, on peut en déduire que les instructions seront exécutées trois fois. En effet, les insctuctions contenues dans la boucle ne sont exécutées que si l’indice est compris entre les bornes de départ et d’arrivée (bornes incluses ou >= et <=). L’indice i va prendre successivement les valeurs 1, 3, 5 et 7. Une fois que i vaut 7, on dit que l’on sort de la boucle car i n’appartient plus à l’intervalle défini par la boucle de départ et la boucle d’arrivée. La macro poursuit alors la lecture prodécurale du code qui suit.

Lire un tableau Excel en VBA

Pour en revenir à notre exemple initial, voici comment on pourrait balayer les cellules d’un tableau Excel à l’aide d’une procédure VBA en utilisant une boucle For.

Imaginons que l’on souhaite afficher les cellules d’un tableau qui vont de B10 jusque B250. Bien entendu, on peut imaginer que l’on souhaite procéder à des calculs complexes ou tout autres traitement et nalyse des données.

For maLecture()

Dim i as Integer 'déclaration de i comme un entier

For i = 10 to 250 

debug.print cells(i, 2).value    ' Affiche dans le fenêtre exécution la   valeur de la cellule lue

if cells(i,2).value = "" then exit for

Next i  'On incrémente l'indice et on retourne à l'instruction For

On constate que les coordonnées de notre  plage de cellules correspondent aux valeurs des bornes de départ et d’arrivée de notre boucle For.

L’astuce consiste ici à utiliser l’indice i comme numéro de ligne dans l’objet cells qui lui-même représente la cellule lue et dont la valeur est affichée via le débug.print dans la fenêtre exécution (ctrl+G). En savoir plus sur l’objet cells.

A noter que si vous souhaitez pour une raison ou une autre quitter prématurément l’exécution de votre boucle For, il vous faut utiliser un exit For. Attention, celui-ci doit est systématiquement sujet à une condition. Dans notre exemple ci-dessus, on sort de la boucle For si le contenu de la cellule est vide (chaine de caractère vide).

Bien entendu, la syntaxe de la boucle For indiquée précédemment est également valable si vous écrivez des macros VBA pour Access, Word, Powerpoint ou encore Outlook. Pour faire simple, pour les logiciels de la suite bureautique Office.

La boucle For en VBA
Votez pour ce billet !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *