VBA – ActiveCell Offset
In this Article
Ce tutoriel montre comment utiliser le décalage de cellule active dans VBA.
ActiveCell est une propriété de VBA qui représente l’adresse de la cellule active dans votre feuille de calcul. Si le curseur est positionné dans la cellule A1, la propriété ActiveCell de VBA renverra l’adresse de la cellule « A1 ». Un certain nombre de propriétés et de méthodes sont liées à Activecell. Dans cet article, nous nous concentrons sur la méthode ActiveCell.Offset.
Propriétés et Méthodes de ActiveCell.Offset
ActiveCell.Offset possède un certain nombre de propriétés et de méthodes qui peuvent être programmées avec VBA. Pour visualiser les propriétés et méthodes disponibles, tapez l’instruction suivante dans une procédure, comme indiqué ci-dessous, et appuyez sur la touche point du clavier pour afficher une liste déroulante.
Les méthodes sont représentées par l’icône de méthode verte et les propriétés par l’icône de petite main. Les propriétés et les méthodes de la méthode ActiveCell.Offset sont les mêmes que celles de la méthode ActiveCell.
Syntaxe de ActiveCell.Offset
La syntaxe de ActiveCell.Offset est la suivante
où RowOffset et ColumnOffset représentent le nombre de lignes à décaler (nombres positifs pour le bas, nombres négatifs pour le haut) et le nombre de colonnes que vous souhaitez décaler (nombres positifs décalés vers la droite, nombres négatifs vers la gauche).
ActiveCell.Offset.Select
La méthode ActiveCell.Offset.Select est la méthode la plus couramment utilisée de la méthode ActiveCell.Offset. Elle vous permet de vous déplacer vers une autre cellule de votre feuille de calcul. Vous pouvez utiliser cette méthode pour vous déplacer d’une colonne à l’autre ou d’une ligne à l’autre de votre feuille de calcul.
Pour descendre d’une ligne tout en restant dans la même colonne :
Activecell.Offset(1,0).Select
Pour se déplacer d’une colonne à l’autre, tout en restant dans la même ligne :
Activecell.Offset (0,1).Select
Pour descendre d’une ligne et traverser une colonne :
Activecell.Offset (1,1).Select
Pour se déplacer vers le haut d’une ligne :
Activecell.Offset(-1,0).Select
Pour se déplacer vers la gauche d’une colonne :
Activecell.Offset(0,-1).Select
Dans la procédure ci-dessous, nous parcourons en boucle une plage de cellules et nous nous déplaçons d’une ligne vers le bas et d’une colonne vers le haut au cours de la boucle:
Sub ActiveCellTest()
Dim x As Integer
Range("A1").Select
For x = 1 To 10
ActiveCell = x
ActiveCell.Offset(1, 1).Select
Next x
End Sub
Le résultat est illustré dans le graphique ci-dessous :
La boucle place la valeur de i (1-10) dans la cellule active, puis utilise la propriété Activecell.Offset pour descendre d’une ligne et traverser une colonne vers la droite – en répétant cette boucle 10 fois.
Utilisation de l’objet Range avec la Sélection Activecell.Offset
L’utilisation de l’objet Range avec la cellule active peut parfois prêter à confusion.
Considérons la procédure suivante :
Sub ActiveCellOffsetRange()
Range("B1:B10").Select
ActiveCell.Offset(1, 1).Range("A1").Select
End Sub
Avec ActiveCell.Offset(1,1).Range(« A1 »), le Range(« A1 ») a été spécifié. Toutefois, cela ne signifie pas que la cellule A1 de la feuille sera sélectionnée. Comme nous avons spécifié la Plage(« B1:B10 »), la cellule A1 de cette plage est en fait la cellule B1 du classeur. Par conséquent, la cellule sera décalée d’une ligne et d’une colonne par rapport à la cellule B1 et NON par rapport à la cellule A1.
Par conséquent, la plage (« A1 ») n’est pas nécessaire dans ce cas, car la macro fonctionnera de la même manière avec ou sans celle-ci.
Alternatives à ActiveCell
Au lieu d’utiliser ActiveCell avec la méthode Offset, nous pouvons également utiliser l’objet Range avec la méthode Offset.
Sub RangeOffset()
Range("B1").Offset(0, 1).Select
End Sub
La procédure ci-dessus permet de sélectionner la cellule C1 de la feuille de calcul.