VBA : La boucle POUR



La première structure répétitive utilisée en algorithmie est la boucle POUR, vous devez la choisir à chaque fois que le nombre d'itérations est connu au départ. Sa notation générale pourrait s'écrire comme cela :
POUR Compteur variant de Min à Max FAIRE
 Action(s)
Fin de POUR
Voyons comment utiliser cette structure en langage VBA.


- 1 - Dans ce premier exemple nous allons effectuer la multiplication par 7 d'un entier x variant de 1 à 10, et écrire le résultat dans la colonne A de notre feuille de calcul grâce à la fonction cells(ligne, colonne) :


Sub Ma_boucle_1()
Dim x As Integer
For x = 1 To 10
Cells(x, 1) = x * 7
Next x
End Sub


L'emploi de la variable x derrière l'instruction Next est facultative. Vous noterez que je n'ai pas initialisé la variable x au préalable, cette initialisation se fait en affectant la valeur 1 en entrée de boucle.


- 2 - Dans ce deuxième exemple nous allons préciser la valeur de l'incrément grâce à l'instruction Step (faute de quoi l'incrément est forcément de 1) :


Sub Ma_boucle_2()
Dim x As Integer
Dim y As Integer
y = 0
For x = 1 To 10 Step 3
y = y + 1
Cells(y, 1) = x * 7
Next
End Sub


La variable y me permet de bien écrire sur la ligne suivante à chaque itération, autrement j'écrirai une ligne sur 3.


- 3 - A l'inverse, il peut également y avoir décrémentation de la variable, faisons la table de 7 à l'envers...


Sub Ma_boucle_3()
Dim x As Integer
Dim y As Integer
y = 1
For x = 10 To 1 Step -1
Cells(y, 1) = x * 7
y = y + 1
Next x
End Sub


Attention, si vous ne précisez pas la valeur de décrément, la boucle ne fonctionnera pas.


- 4 - Pour finir un grand classique : L'imbrication de deux boucles POUR. Ici nous souhaitons créer une table avec tous les multiplicateurs de 1 à 10, nous devons donc imbriquer deux boucles pour gérer les écritures en lignes et en colonnes.


Sub table_multiplication()
Dim x As Integer
Dim y As Integer
Dim col As Integer
Dim lig As Integer
Cells(1, 1).Select
Cells(1, 1) = "*"
With Selection
.Font.Bold = True
.Font.Size = 16
.Font.ColorIndex = 3
.HorizontalAlignment = xlCenter
End With
'Ecrivons les entêtes de colonnes
For y = 1 To 10
Cells(1, y + 1).Select
Cells(1, y + 1) = y
With Selection
.Font.Bold = True
.Font.Size = 16
.Font.ColorIndex = 3
.HorizontalAlignment = xlCenter
End With
Next
'Ecrivons les entêtes de lignes
For x = 1 To 10
Cells(x + 1, 1).Select
Cells(x + 1, 1) = x
With Selection
.Font.Bold = True
.Font.Size = 16
.Font.ColorIndex = 3
.HorizontalAlignment = xlCenter
End With
Next
'nous devons connaitre les coordonnées de départ
Range("B2").Select
lig = Selection.Row
col = Selection.Column
For x = 1 To 10 Step 1
For y = 1 To 10 Step 1
Cells(lig, col) = x * y
col = col + 1
'il faut ramener le curseur en début de ligne
If col = 12 Then
col = 2
End If
Next y
lig = lig + 1
Next x
End Sub 




0 commentaires:

Enregistrer un commentaire

top