Sélectionner une feuille de calcul à l'aide de VBA dans Excel

Cette page présente différentes façons de sélectionner une feuille de calcul sur laquelle opérer, en fonction du nom ou du numéro. Il est important d'utiliser une feuille de calcul et des variables de classeur plutôt que de se fier à la fonction Activesheet. Bien que fournissant un code court pour accéder à une feuille de calcul, l'utilisation de l'option CodeName peut conduire à des erreurs car il ne fonctionne que dans certaines conditions. Il a examiné deux conditions d'erreur possibles et la manière de les traiter.

Sélectionnez feuille de calcul par nom

La propriété Item de la collection Worksheets est utilisée pour renvoyer un seul objet Feuille de calcul de la collection.

A titre d'exemple, il s'appelle ainsi :


Dim ws As Worksheet
Set ws = Application.ActiveWorkbook.Worksheets.Item(Index:="data")

Le collection Worksheets est obtenue à partir d'une Workbook.Worksheets appel de procédure. Le procédure Item renvoie un objet de type Worksheet qui est affectée facultative à une variable ws .

... ou plus court :


Dim ws As Worksheet
Set ws = Worksheets(Index:="data")

Dim strWorkbook As String: strWorkbook = "Demo.xlsx"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim wsData As Worksheet
Set wsData = wb.Worksheets("Data")

Sélection d'une feuille par numéro d'index

Un feuille de calcul peut également être identifié par son numéro dans la collection, où la feuille 1 correspond à la première feuille de calcul.


Dim ws As Worksheet
Set ws = Worksheets(1)

Feuilles ou fiches de calcul

En fait, vous pouvez également obtenir un feuille de calcul à partir de collection Sheets du Workbook. Cette dernière contient toutes les feuilles du classeur : outre les feuille de calculs, également les graphiques (chart sheets). Si vous souhaitez qu'un feuille de calcul soit renvoyé, il est plus sûr d'utiliser Worksheets en précisant le type.

Sélectionner feuille de calcul par nom de variable

À l'exception des macros à usage général, vous connaîtrez souvent le nom des feuille de calculs sur lesquels votre macro agit.


Dim strWorkbook As String: strWorkbook = "Demo.xlsx"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim strWorksheet As String: strWorksheet = "data" 
Dim ws As Worksheet
Set ws = wb.Worksheets(strWorksheet)

Cependant, le nom de la feuille peut inclure un élément variable, par exemple la date (formatée) d'un rapport de production sous forme de fichier csv. Dans ce cas, vous pouvez parcourir les feuilles de calcul en boucle, comme indiqué ci-dessous, où le caractère générique, Like "...*", reviendra la feuille de calcul dont le nom commence par "Data" et dont la fin n'est pas précisée :


Dim wsData As Worksheet
Dim ws As Worksheet
For Each ws In wb.Worksheets
	If ws.Name Like "Data*" Then
		Set wsData = ws
		Exit For
	End If
Next ws

Sélectionnez feuille de calcul par nom de code

Si votre macro ne doit fonctionner que sur les feuilles du classeur dans lequel elle se trouve, vous pouvez utiliser une syntaxe plus courte :


Sheet1.Range("A1").Value = "Hello world"

Sélectionner la feuille à gauche

Utiliser le Previous pour placer la feuille à gauche. Utilisez la propriété Next pour déplacer la feuille vers la droite.


Dim wsPrevious As Worksheet
Set wsPrevious = Sheet2.Previous
If Not wsPrevious Is Nothing Then
 
End If

Sélectionner la feuille à droite

Utiliser le Next pour déplacer la feuille vers la droite.


Dim wsNext As Worksheet
Set wsNext = Sheet2.Next

Sélectionnez Worksheet Range

En fin de compte, vous voudrez probablement faire des choses avec une plage dans la feuille de calcul pour laquelle vous utiliserez un Range variable.


Dim strWorkbook As String: strWorkbook = "Demo.xlsm"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim strWorksheet As String: strWorksheet = "data"
Dim ws As Worksheet
Set ws = wb.Sheets(strSheet)
Dim rng As Range
Set rng = ws.Range("A2:B6")

Erreur d'exécution 9 : indice hors plage

Si le Index fait référence à un élément qui n'est pas présent dans la collection, le système renvoie l'erreur d'exécution 9 : l'indice est hors de portée. En fonction de l'utilisation réelle, vous pouvez envisager l'ajout d'une gestion des erreurs.


Sub Demo()
	On Error GoTo HandleError
	Set ws = Worksheets("xxx")
	
HandleExit:
	Exit Sub
HandleError:
	MsgBox Err.Description
	Resume HandleExit
End Sub

Ouvrir l'événement feuille de calcul.

Vous pouvez utiliser la procédure Worksheet_Activate() qui s'exécute lorsque la feuille est sélectionnée. Pour ajouter le code, ouvrez le module feuille de calcul (sélectionnez-le dans l'explorateur de projet) et, dans la liste déroulante de gauche, sélectionnezWorksheet et dans la liste déroulante de droite, sélectionnez Activate. Cette opération insère un bloc de code vide, puis le complète de la manière suivante :


Private Sub Worksheet_Activate()
	MsgBox "Hi! I'm " & Me.Name & ", who are you?"
End Sub

Auteur : Mark Uildriks
Référence : Worksheets.Item() | Microsoft Learn
icône

Essayez le complément de l'éditeur Code VBA