Stephe doit développer une macro qui effectuera une opération basée sur les cellules qu’un utilisateur sélectionne avant d’exécuter la macro. Elle sait comment faire cela si l’utilisateur sélectionne une plage de cellules, mais elle ne sait pas comment parcourir les cellules d’une sélection si l’utilisateur sélectionne une plage de cellules non contiguë.

En ce qui concerne VBA, il y a très peu de différence entre une sélection contiguë et une sélection non contiguë. Excel vous permet d’accéder à chacun d’eux de la même manière. Considérez l’extrait de code suivant:

Dim c As Range

For Each c In Selection     ' do something here     MsgBox c.Address & vbTab & c.Value Next c

Dans ce cas, les cellules de la plage sélectionnée sont parcourues, une par une, à l’aide de la boucle For …​ Next. À l’intérieur de la boucle, la variable c représente une cellule individuelle et peut être utilisée dans les références, comme illustré.

Si, pour une raison quelconque, vous souhaitez accéder à chaque zone contiguë de la sélection, vous pouvez le faire en vous adressant spécifiquement au groupe Zones, comme indiqué dans cet extrait:

Dim a As Range Dim c As Range

For Each a In Selection.Areas     'Now each a refers to a contiguous range     'Do something here with areas, if desired     For Each c In a.Cells         'Now each c refers to a cell in the area         'Do something here         MsgBox c.Address & vbTab & c.Value     Next c Next a

Vous devez également noter que si la plage à laquelle vous souhaitez accéder (contiguë ou non) a été nommée dans Excel, vous pouvez également accéder uniquement aux cellules de la plage nommée. Remplacez simplement le mot « Sélection » dans chacun de ces exemples par le nom de la plage, de cette manière:

Dim c As Range

For Each c In Range("MyNamedRange")

' do something here     MsgBox c.Address & vbTab & c.Value Next c

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (8701) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Stepping_Through_a_Non-Contiguous_Range_of_Cells [Traverser une plage de cellules non contiguë].