Activer une feuille à l'aide de VBA dans Excel
Application de la methode Activate
sur un Worksheet
en fait la feuille active,
la feuille du dessus.
Sélectionner une feuille
Pour pouvoir activer une feuille, vous devez d'abord la sélectionner. L'activation d'un objet est simple, il suffit d'appeler la fonction Activate
sur l'objet.
Vous devrez spécifier l'objet que vous voulez activer et c'est là que vous avez plusieurs options qui sont discutées ici.
Select
à la place de Activate
et j'obtiens le même résultat :
la feuille est activée.
Cependant, il n'en reste pas moins que la feuille est activée, Select
a été conçu dans un autre but, à savoir aider à la sélection des une ou plusieurs feuilles
et pour cette raison l'utilisation d'Activate est préférable pour faire d'une feuille la feuille active.
Activer la feuille par numéro
Il s'appelle ainsi :
ActiveWorkbook.Sheets(Index:=1).Activate
Le code ci-dessus active la première feuille du classeur spécifié.
ActiveWorkbook
pour fournir le parent Workbook
dont l'objet Worksheet
est utilisé. Dans le code réel, il est préférable d'utiliser des variables d'objet explicitement déclarées et assignées, dans le cas présent : Dim wbActiveWorkbook As Workbook
: Set wbActiveWorkbook = ActiveWorkbook
, très probablement avec une autre expression d'affectation d'objet.
L'Object Worksheet
est obtenu à partir du classeur Sheets
procédure .
With
bloc d'instructions. L'utilisation de la syntaxe With rend la structure du code plus claire et offre des avantages en termes de performances.
L'appel à cette méthode équivaut à la sélection de l'onglet de la feuille.
Activer la feuille par nom
Activer la feuille avec le nom de la variable
La manière la plus courante de se référer à une feuille est son nom, tel qu'il est affiché dans l'onglet "Feuilles" :
ActiveWorkbook.Sheets(Index:="data2-17-14").Activate
Si votre macro est destinée à être utilisée par d'autres personnes, vous devrez ajouter une gestion des erreurs appropriée, par exemple :
Dim ws As Worksheet
On Error Resume Next
Set ws = ActiveWorkbook.Sheets(Index:="data2-17-14")
On Error GoTo 0
If Not ws Is Nothing Then
ws.Activate
Else
End If
Activer la feuille par nom de code
Vous pouvez également vous référer directement à une feuille en utilisant sa fonction CodeName
propriété.
Cette méthode présente l'avantage de garantir l'existence de la feuille de noms.
Il n'est toutefois possible de le faire que si la macro se trouve dans le même classeur que la feuille, ce qui n'est souvent pas le cas.
Sheet1.Activate
CodeName
ne peut être modifiée que dans la fenêtre des propriétés du module de classe de l'éditeur VBA
dans la fenêtre des propriétés du module de classe. Elle ne peut pas être modifiée à l'aide de VBA code.
Activer la feuille en fonction de la valeur de la cellule
L'activation d'une feuille en fonction de la valeur d'une cellule peut s'avérer utile lorsque le nombre d'onglets est tel qu'il devient difficile de naviguer. Une solution possible serait d'avoir une navigation feuille de calcul listant les feuilles cibles et d'ouvrir la feuille correspondant à la cellule sélectionnée.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strWorksheet As String: strWorksheet = Target.Value
On Error Resume Next
Worksheets(Index:=strWorksheet).Activate
End Sub
- dans l'explorateur de projet, double-cliquez sur le module de classe Sheet approprié pour l'ouvrir, et
- Dans la liste déroulante de gauche du module (Général), sélectionnez Feuille de calcul.
- S'il n'apparaît pas automatiquement par défaut, le code du gestionnaire d'événement approprié peut être sélectionné dans la liste déroulante de droite.
Sélectionner une feuille et une cellule
Une cellule ne peut être sélectionnée que si la feuille sur laquelle elle se trouve est active.
C'est pourquoi, en général, vous ferez précéder la sélection par l'activation de sa Parent
.
Par exemple, au lieu de Application.Range("Sheet2!B2").Select
vous serez plus en sécurité :
With Application.Range("Sheet2!B2")
.Parent.Activate
.Select
End With
Activer une feuille dans un autre classeur
Pour activer une feuille, il n'est pas nécessaire que le classeur soit le classeur actif. Il suffit de identifier le cahier d'exerciceset le feuille de calcul que vous voulez activer, puis faites-le :
Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate
Workbooks(Index:="data123.xlsx").Sheets(Index:="Countries").Activate
.
Dans tous les autres cas, il est préférable d'introduire des variables pour le workbook
et ou worksheet
comme nous l'avons fait ci-dessus.
Activer la feuille sans l'afficher
Il n'est pas nécessaire de rendre un feuille de calcul (ou un classeur !) actif pour pouvoir opérer dessus.
L'idéal est de déclarer un Worksheet
et l'instancier à l'aide d'un Set
déclaration,
comme cela a été fait en la section ci-dessus.
Il est plus rapide et plus sûr d'utiliser des variables de cette manière plutôt que de s'appuyer sur le fait que la feuille est active.
Auteur : Mark Uildriks Référence : Worksheet.Activate() | Microsoft Learn