Itération sur une plage de cellules

Lorsque vous utilisez Visual Basic, vous devez souvent appliquer le même groupe d'instructions à chaque cellule d'une plage de cellules. Pour ce faire, il suffit de combiner une boucle et une ou plusieurs méthodes pour identifier chaque cellule, une par une, puis d'appliquer l'opération.

Pour effectuer une boucle sur une plage, vous pouvez utiliser la boucle For...Next avec la propriété Cells. À l’aide de la propriété Cells, vous pouvez utiliser le compteur de boucle (ou d’autres variables ou expressions) plutôt que les numéros d’index de cellule. Dans l'exemple suivant, la variable counter remplace l'index de ligne. La procédure traite en boucle la plage C1:C20, donne la valeur 0 (zéro) à n’importe quel nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero1() 
 For Counter = 1 To 20 
 Set curCell = Worksheets("Sheet1").Cells(Counter, 3) 
 If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 
 Next Counter 
End Sub

Une autre façon d'exécuter une boucle sur une plage consiste à utiliser la boucle For Each...Next avec la collection de cellules spécifiée dans la propriété Range. Visual Basic définit automatiquement, à chaque exécution de la boucle, une variable objet pour la cellule suivante. La procédure suivante effectue une boucle dans la plage A1:D10, remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero2() 
 For Each c In Worksheets("Sheet1").Range("A1:D10").Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Si vous ne connaissez pas les limites de la plage dans laquelle vous souhaitez effectuer une boucle, utilisez la propriété CurrentRegion pour renvoyer la plage qui entoure la cellule active. Par exemple, lorsque la procédure suivante est exécutée à partir d'une feuille de calcul, la boucle parcourt la plage entourant la cellule active en remplaçant par 0 (zéro) tout nombre dont la valeur absolue est inférieure à 0,01.

Sub RoundToZero3() 
 For Each c In ActiveCell.CurrentRegion.Cells 
 If Abs(c.Value) < 0.01 Then c.Value = 0 
 Next 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.