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 ».