Comment sélectionner des cellules/plages à l’aide de procédures Visual Basic dans Excel

Microsoft fournit des exemples de programmation à titre d'illustration uniquement, sans garantie expresse ou implicite. Cela inclut, sans y être limité, les garanties implicites de commercialisation et d'adaptation à un but en particulier. Cet article considère que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques. Les exemples de cet article utilisent les méthodes Visual Basic répertoriées dans le tableau suivant.

Method             Arguments
------------------------------------------
Activate           none
Cells              rowIndex, columnIndex
Application.Goto   reference, scroll
Offset             rowOffset, columnOffset
Range              cell1
                   cell1, cell2
Resize             rowSize, columnSize
Select             none
Sheets             index (or sheetName)
Workbooks          index (or bookName)
End                direction
CurrentRegion      none

Les exemples de cet article utilisent les propriétés du tableau suivant.

Property         Use
---------------------------------------------------------------------
ActiveSheet      to specify the active sheet
ActiveWorkbook   to specify the active workbook
Columns.Count    to count the number of columns in the specified item
Rows.Count       to count the number of rows in the specified item
Selection        to refer to the currently selected range

Comment sélectionner une cellule dans la feuille de calcul active

Pour sélectionner la cellule D5 dans la feuille de calcul active, vous pouvez utiliser l’un des exemples suivants :

ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select

Comment sélectionner une cellule dans une autre feuille de calcul dans le même classeur

Pour sélectionner la cellule E6 dans une autre feuille de calcul du même classeur, vous pouvez utiliser l’un des exemples suivants :

Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
   -or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 1 ci-dessus pour sélectionner la cellule :

Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

Comment sélectionner une cellule dans une feuille de calcul dans un autre classeur

Pour sélectionner la cellule F7 dans une feuille de calcul dans un autre classeur, vous pouvez utiliser l’un des exemples suivants :

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 1 ci-dessus pour sélectionner la cellule :

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

Comment sélectionner une plage de cellules dans la feuille de calcul active

Pour sélectionner la plage C2:D10 dans la feuille de calcul active, vous pouvez utiliser l’un des exemples suivants :

ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

or

ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select

or, alternatively, it could be simplified to this:

Range(Cells(2, 3), Cells(10, 4)).Select

Comment sélectionner une plage de cellules dans une autre feuille de calcul dans le même classeur

Pour sélectionner la plage D3:E11 dans une autre feuille de calcul du même classeur, vous pouvez utiliser l’un des exemples suivants :

Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 4 ci-dessus pour sélectionner la plage :

Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

Comment sélectionner une plage de cellules dans une feuille de calcul dans un classeur différent

Pour sélectionner la plage E4:F12 dans une feuille de calcul dans un autre classeur, vous pouvez utiliser l’un des exemples suivants :

Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
      Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 4 ci-dessus pour sélectionner la plage :

Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
   ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

Comment sélectionner une plage nommée dans la feuille de calcul active

Pour sélectionner la plage nommée « Test » dans la feuille de calcul active, vous pouvez utiliser l’un des exemples suivants :

Range("Test").Select
Application.Goto "Test"

Comment sélectionner une plage nommée dans une autre feuille de calcul dans le même classeur

Pour sélectionner la plage nommée « Test » dans une autre feuille de calcul du même classeur, vous pouvez utiliser l’exemple suivant :

Application.Goto Sheets("Sheet1").Range("Test")

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 7 ci-dessus pour sélectionner la plage nommée :

Sheets("Sheet1").Activate
Range("Test").Select

Comment sélectionner une plage nommée dans une feuille de calcul dans un autre classeur

Pour sélectionner la plage nommée « Test » dans une feuille de calcul dans un autre classeur, vous pouvez utiliser l’exemple suivant :

Application.Goto _
   Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")

Vous pouvez également activer la feuille de calcul, puis utiliser la méthode 7 ci-dessus pour sélectionner la plage nommée :

Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

Comment sélectionner une cellule par rapport à la cellule active

Pour sélectionner une cellule qui se trouve cinq lignes en dessous et quatre colonnes à gauche de la cellule active, vous pouvez utiliser l’exemple suivant :

ActiveCell.Offset(5, -4).Select

Pour sélectionner une cellule qui se trouve à deux lignes au-dessus et trois colonnes à droite de la cellule active, vous pouvez utiliser l’exemple suivant :

ActiveCell.Offset(-2, 3).Select

Remarque

Une erreur se produit si vous essayez de sélectionner une cellule « hors de la feuille de calcul ». Le premier exemple ci-dessus retourne une erreur si la cellule active se trouve dans les colonnes A à D, car le déplacement de quatre colonnes vers la gauche amène la cellule active à une adresse de cellule non valide.

Comment sélectionner une cellule par rapport à une autre cellule (non active)

Pour sélectionner une cellule qui se trouve à cinq lignes en dessous et quatre colonnes à droite de la cellule C7, vous pouvez utiliser l’un des exemples suivants :

ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

Comment sélectionner un décalage de plage de cellules à partir d’une plage spécifiée

Pour sélectionner une plage de cellules de la même taille que la plage nommée « Test », mais qui est décalée de quatre lignes vers le bas et de trois colonnes vers la droite, vous pouvez utiliser l’exemple suivant :

ActiveSheet.Range("Test").Offset(4, 3).Select

Si la plage nommée se trouve dans une autre feuille de calcul (non active), activez d’abord cette feuille de calcul, puis sélectionnez la plage à l’aide de l’exemple suivant :

Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

Comment sélectionner une plage spécifiée et redimensionner la sélection

Pour sélectionner la plage nommée « Base de données », puis étendre la sélection de cinq lignes, vous pouvez utiliser l’exemple suivant :

Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
   Selection.Columns.Count).Select

Comment sélectionner une plage spécifiée, la décaler, puis la redimensionner

Pour sélectionner une plage de quatre lignes ci-dessous et trois colonnes à droite de la plage nommée « Base de données » et inclure deux lignes et une colonne de plus que la plage nommée, vous pouvez utiliser l’exemple suivant :

Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
   Selection.Columns.Count + 1).Select

Comment sélectionner l’union de deux plages spécifiées ou plus

Pour sélectionner l’union (autrement dit, la zone combinée) des deux plages nommées « Test » et « Exemple », vous pouvez utiliser l’exemple suivant :

Application.Union(Range("Test"), Range("Sample")).Select

Remarque

que les deux plages doivent se trouver dans la même feuille de calcul pour que cet exemple fonctionne. Notez également que la méthode Union ne fonctionne pas entre les feuilles. Par exemple, cette ligne fonctionne correctement.

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))

mais cette ligne

Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))

retourne le message d’erreur :

Échec de la méthode Union de la classe d’application

Comment sélectionner l’intersection de deux plages spécifiées ou plus

Pour sélectionner l’intersection des deux plages nommées « Test » et « Exemple », vous pouvez utiliser l’exemple suivant :

Application.Intersect(Range("Test"), Range("Sample")).Select

Notez que les deux plages doivent se trouver dans la même feuille de calcul pour que cet exemple fonctionne.

Les exemples 17-21 de cet article font référence à l’exemple de jeu de données suivant. Chaque exemple indique la plage de cellules dans les exemples de données qui seraient sélectionnés.

A1: Name    B1: Sales    C1: Quantity
A2: a       B2: $10      C2: 5
A3: b       B3:          C3: 10
A4: c       B4: $10      C4: 5
A5:         B5:          C5:
A6: Total   B6: $20      C6: 20

Comment sélectionner la dernière cellule d’une colonne de données contiguës

Pour sélectionner la dernière cellule d’une colonne contiguë, utilisez l’exemple suivant :

ActiveSheet.Range("a1").End(xlDown).Select

Lorsque ce code est utilisé avec l’exemple de table, la cellule A4 est sélectionnée.

Comment sélectionner la cellule vide en bas d’une colonne de données contiguës

Pour sélectionner la cellule sous une plage de cellules contiguës, utilisez l’exemple suivant :

ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select

Lorsque ce code est utilisé avec l’exemple de table, la cellule A5 est sélectionnée.

Comment sélectionner une plage entière de cellules contiguës dans une colonne

Pour sélectionner une plage de cellules contiguës dans une colonne, utilisez l’un des exemples suivants :

ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
      End(xlDown).Address).Select

Lorsque ce code est utilisé avec l’exemple de table, les cellules A1 à A4 sont sélectionnées.

Comment sélectionner une plage entière de cellules non contiguës dans une colonne

Pour sélectionner une plage de cellules qui ne sont pas contiguës, utilisez l’un des exemples suivants :

ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
   -or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
   End(xlUp).Address).Select

Lorsque ce code est utilisé avec l’exemple de table, il sélectionne les cellules A1 à A6.

Comment sélectionner une plage rectangulaire de cellules

Pour sélectionner une plage rectangulaire de cellules autour d’une cellule, utilisez la méthode CurrentRegion. La plage sélectionnée par la méthode CurrentRegion est une zone délimitée par toute combinaison de lignes vides et de colonnes vides. Voici un exemple d’utilisation de la méthode CurrentRegion :

ActiveSheet.Range("a1").CurrentRegion.Select

Ce code sélectionne les cellules A1 à C4. D’autres exemples pour sélectionner la même plage de cellules sont répertoriés ci-dessous :

ActiveSheet.Range("a1", _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
   -or-
ActiveSheet.Range("a1:" & _
   ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select

Dans certains cas, vous pouvez sélectionner les cellules A1 à C6. Dans cet exemple, la méthode CurrentRegion ne fonctionnera pas en raison de la ligne vide de la ligne 5. Les exemples suivants sélectionnent toutes les cellules :

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
    -or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
   ActiveSheet.Cells(lastRow, lastCol).Address).Select

Comment sélectionner plusieurs colonnes non contiguës de longueur variable

Pour sélectionner plusieurs colonnes non contiguës de longueur variable, utilisez l’exemple de table et de macro suivant :

A1: 1  B1: 1  C1: 1  D1: 1
A2: 2  B2: 2  C2: 2  D2: 2
A3: 3  B3: 3  C3: 3  D3: 3
A4:    B4: 4  C4: 4  D4: 4
A5:    B5: 5  C5: 5  D5:
A6:    B6:    C6: 6  D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select

Lorsque ce code est utilisé avec l’exemple de table, les cellules A1:A3 et C1:C6 sont sélectionnées.

Remarques sur les exemples

La propriété ActiveSheet peut généralement être omise, car elle est implicite si une feuille spécifique n’est pas nommée. Par exemple, au lieu de

ActiveSheet.Range("D5").Select

vous pouvez utiliser :

Range("D5").Select

La propriété ActiveWorkbook peut également être omise. Sauf si un classeur spécifique est nommé, le classeur actif est implicite.

Lorsque vous utilisez la méthode Application.Goto, si vous souhaitez utiliser deux méthodes Cells dans la méthode Range lorsque la plage spécifiée se trouve sur une autre feuille de calcul (et non sur la feuille de calcul active), vous devez inclure l’objet Sheets à chaque fois. Par exemple :

    With ActiveWorkbook.Sheets("Sheet1")
        Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
    End With

Pour tout élément entre guillemets (par exemple, la plage nommée « Test »), vous pouvez également utiliser une variable dont la valeur est une chaîne de texte. Par exemple, au lieu de

ActiveWorkbook.Sheets("Sheet1").Activate

vous pouvez utiliser

ActiveWorkbook.Sheets(myVar).Activate

où la valeur de myVar est « Sheet1 ».