Comment utiliser les boucles FOR sur VBA

Les boucles permettent de répéter des instructions un certain nombre de fois, ce qui peut être un gain de temps immense.

Si vous n'avez aucune expérience en programmation, cela ne pose aucun problème car nous allons tout voir de A à Z.

Obtenez votre fichier d'exercice gratuit

Le meilleur moyen d'apprendre à coder sur VBA est de le faire vous même.

J'ai donc ajouté un exemple gratuit afin que vous puissiez suivre les instructions et pratiquer en même temps. Téléchargez le avant de continuer.

Boucles FOR sur VBA

Créer une BOUCLE FOR est relativement simple. La syntaxe est la suivante pour une boucle se répétant 5 fois par exemple :

For i=1 to 5 ' ==> Boucle se répétant 5 fois

[INSTRUCTIONS] '==> les instructions à répéter

Next 'Commande pour la fin de la Boucle

A chaque répétition de la boucle, la variable i est automatiquement augmentée de 1.

Vous n'avez pas à utiliser la variable pour la boucle.

Néanmoins, i est ce qui est communément utilisé en programmation. On gardera donc cette convention.

Samy AMRI - Formateur

Regardons de plus près le fonctionnement avec un exemple afin d'en percevoir l'utilité.

Supposons que nous voulions numéroter à l'aide de VBA les 15 premières lignes de la colonne A.

Je vous l'accorde, VBA n'est pas indispensable ici, mais c'est juste pour l'exemple.

On voudrait donc obtenir cela :

On pourrait utiliser le code suivant... :

Sub boucle()

    Cells(1, 1) = 1 
'1 en cellule A1
    Cells(2, 1) = 2 
'2 en cellule A2
    Cells(3, 1) = 3 
'3        ...
    Cells(4, 1) = 4     
      
    Cells(5, 1) = 5     
...
    Cells(6, 1) = 6

    Cells(7, 1) = 7
    Cells(8, 1) = 8
    Cells(9, 1) = 9
    Cells(10, 1) = 10
    Cells(11, 1) = 11
    Cells(12, 1) = 12

    Cells(13, 1) = 13
    Cells(14, 1) = 14

    Cells(15, 1) = 15

End Sub

Ce code est très répétitif...

Imaginez maintenant que l'on ait besoin de numéroter plusieurs centaines de lignes...

Vous comprenez donc l'intérêt des boucles!!

Effectivement, en utilisant la boucle FOR, on peut remplacer le code plus haut par le suivant :

Sub boucle_for()

  For i = 1 To 15
' ==> Boucle prévue
'se répétant 15 fois

       Cells(i, 1) = i 
' i dans la i ème ligne
'de la colonne A

  Next 'Commande pour la fin
'de la Boucle

End Sub

On obtient exactement la même chose.

Regardons de plus près le code :

  • For i=1 to 15 
    • La boucle commence avec le compteur "For i = 1 to 15" qui dit simplement à Excel de répéter 15 fois (de 1 à 15) la boucle à l'aide de la variable i
    • Celle ci commence par prendre la valeur 1, puis à la deuxième boucle, i prend la valeur 2 et ainsi de suite.
  • Cells(i, 1) = i
    • Ensuite on dit à Excel ce qu'il doit exécuter. Ici pour chaque cellule de coordonnées (i, 1) : on associe la valeur i
    • La valeur i allant encore une fois de 1 à 15 (elle augmente de 1 à chaque boucle).
  • Next
    • On utilise cette commande "Next" pour délimiter la boucle. Ici le code recommence tant que le compteur (c'est à dire la variable i) n'a pas atteint la valeur 15 donnée à la première ligne.

Ainsi au final :

La première fois que la boucle tourne, i est égal à 1, donc la cellule aux coordonnées (1, 1) prend la valeur 1.

Ensuite, i est égal à 2, donc la cellule aux coordonnées (2,1) prend la valeur 2.

Et ainsi de suite... jusqu'à i = 15.

Maintenant quand vous lancez la macro, vous obtenez un message quelque soit la parité du nombre dans la cellule A1.

Quitter une boucle FOR prématurément

Il est possible de quitter une boucle FOR prématurément grâce à l'instruction suivante :

Exit For ' ==> Pour Quitter une boucle FOR

Sortir d'une boucle prématurément permet de stopper le code dans la boucle quand des conditions sont remplies. C'est pourquoi c'est souvent associé à une condition IF.

Supposons que nous voulions cette fois-ci numéroter les mêmes cellules mais que nous souhaiterions sortir de la boucle si la variable i dépasse un nombre précisé dans la feuille de calcul, dans la cellule D2 par exemple.

Le code serait alors le suivant :

Sub boucle_for()

Dim maximum_boucles As Integer
'Déclaration de la variable

maximum_boucles = Range("d2").Value

'En D2 : une limite de répétitions
'de la boucle est définie

For i = 1 To 15
' ==> Boucle prévue
'se répétant 15 fois

If i > maximum_boucles Then
'Si D2 est vide ou contient
'un nombre < 15, diminution du nb
'de boucles

Exit For
'Si la condition est vraie,
'on quitte la boucle For

          End If

          Cells(i, 1) = i 

' i dans la i ème ligne
'de la colonne A

    Next 'Commande pour la fin
'de la Boucle

End Sub

Ainsi si dans la cellule, D2 on entre le nombre 9 par exemple, on obtient le résultat suivant :

Ici, comme la condition de sortie de la boucle en D2 est égale à 9 < 15, on sort de la boucle prématurément au bout de 9 boucles.

En revanche, si on entre un nombre supérieur à 15, disons 18 par exemple, le résultat est le suivant :

La numérotation s'arrête bien à 15 car c'est le nombre de boucles prévues avec la boucle FOR, il n'y a pas eu de sortie prématurée.

De nombreux tutoriels Excel et VBA gratuits à venir et à découvrir

Pack Premium : VBA Décodé

Ce cours complet est le meilleur moyen pour devenir Excellent.

Formations Excel et VBA Gratuites adaptées à votre niveau

Résumons...

Le principe des boucles est relativement simple mais cela peut très vite devenir complexe, notamment dans le cas de boucles imbriquées...

Mais avec de la pratique, l'utilisation de boucles deviendra très vite naturelle.

Pour vous familiariser, il n' y a pas de secret, il faut pratiquer afin de maîtriser parfaitement ces concepts et réaliser des choses extraordinaires avec Excel.

Ce n'est pas très difficile, une fois avoir écrit quelques codes du même genre de ceux que nous avons vu ensembles, vous pourrez écrire des scripts bien plus complexes en toute autonomie.

Décoder le VBA c'est possible!

Le Pack "VBA Décodé" pour passer du stade de débutant ou confirmé à celui d'excellent!

Vous obtenez un accès à vie, du support, des cas pratiques, des centaines de leçons sous forme de vidéos et bien plus encore.