Categories: INFORMATIQUE

Boucle VBA Excel

La mise en boucle est l’une des techniques de programmation les plus puissantes. Un loop dans Excel VBA vous permet de faire une boucle à travers une gamme de cellules avec seulement quelques lignes de codes.

Boucle unique

Vous pouvez utiliser une seule boucle pour parcourir une gamme unidimensionnelle de cellules.

Placez un bouton de commande sur votre feuille de travail et ajoutez les lignes de code suivantes:DimAsIntegerForToNext

Résultat lorsque vous cliquez sur le bouton de commande sur la feuille:

Explication : Les lignes de code entre For et Next seront exécutées six fois. Pour i = 1, Excel VBA introduit la valeur 100 dans la cellule à l’intersection de la ligne 1 et de la colonne 1. Lorsque Excel VBA atteint Next i, il augmente i de 1 et revient à la déclaration For. Pour i = 2, Excel VBA introduit la valeur 100 dans la cellule à l’intersection de la ligne 2 et de la colonne 1, etc.

Note : il est bon de toujours mettre en retrait (tabulation) le code entre les mots « Pour » et « Suivant ». Cela rend votre code plus facile à lire.

Double boucle

Vous pouvez utiliser une double boucle pour parcourir une plage bidimensionnelle de cellules.

Placez un bouton de commande sur votre feuille de travail et ajoutez les lignes de code suivantes:DimAsIntegerAsIntegerForToForToNextNext

Résultat lorsque vous cliquez sur le bouton de commande sur la feuille:

Explication : Pour i = 1 et j = 1, Excel VBA introduit la valeur 100 dans la cellule à l’intersection de la ligne 1 et de la colonne 1. Lorsque Excel VBA atteint la valeur j suivante, il augmente la valeur j de 1 et revient à l’énoncé For j. Pour i = 1 et j = 2, Excel VBA introduit la valeur 100 dans la cellule à l’intersection de la ligne 1 et de la colonne 2. Ensuite, Excel VBA ignore Next j car j ne va que de 1 à 2. Lorsque Excel VBA atteint Next i, il augmente i de 1 et revient à l’instruction For i. Pour i = 2 et j = 1, Excel VBA introduit la valeur 100 dans la cellule à l’intersection de la ligne 2 et de la colonne 1, etc.

Triple boucle

Vous pouvez utiliser une triple boucle pour parcourir des plages bidimensionnelles sur plusieurs feuilles de calcul Excel.

Placez un bouton de commande sur votre feuille de travail et ajoutez les lignes de code suivantes:DimAsIntegerAsIntegerAsIntegerForToForToForToNextNextNext

Explication : La seule modification apportée par rapport au code de la double boucle est que nous avons ajouté une boucle supplémentaire et ajouté des feuilles de travail (c). devant les cellules pour obtenir la plage bidimensionnelle sur la première feuille pour c = 1, la deuxième feuille pour c = 2 et la troisième feuille pour c = 3. Téléchargez le fichier Excel pour voir ce résultat.

Do While Loop

Outre la boucle For Next, il existe d’autres boucles dans Excel VBA. Par exemple, la boucle Do While. Le code placé entre Do While et Loop sera répété aussi longtemps que la partie après Do While est vraie.

1. placez un bouton de commande sur votre feuille de calcul et ajoutez les lignes de code suivantes:DimAsDoWhileLoop

Résultat lorsque vous cliquez sur le bouton de commande sur la feuille:

Explication : tant que i est inférieur à 6, Excel VBA introduit la valeur 20 dans la cellule à l’intersection de la ligne i et de la colonne 1 et incrémente i par 1. Dans Excel VBA (et dans d’autres langages de programmation), le symbole « = » signifie devient. Il ne signifie pas « égal ». Ainsi, i = i + 1 signifie que i devient i + 1. En d’autres termes : prenez la valeur actuelle de i et ajoutez-y 1. Par exemple, si i = 1, i devient 1 + 1 = 2. Par conséquent, la valeur 20 sera placée cinq fois dans la colonne A (et non six car Excel VBA s’arrête lorsque i est égal à 6).

2. Entrez quelques chiffres dans la colonne A.

3. Placer une commande

Source : excel-easy

Autres Tuto Excel : boucle while vbaconvertir des cm en poucesexcel liste déroulante couleurcomment faire une multiplication sur excelexplication vlookupcréer une macro excellbs en kgconvertir lbs en kg5 lbs en kg10 lbs en kg1 lbs en kgformule tcam

EarlyBirds