Partager via


Event, instruction

Déclare un événement défini par l’utilisateur.

Syntaxe

[ Public ] Eventprocedurename [ (arglist) ]

L’instruction Event comporte les parties suivantes :

Élément Description
Public Optional. Spécifie que l’événement est visible dans tout le projet. Par défaut, les types Events sont Public. Notez que les événements peuvent être déclenchés uniquement dans le module où ils sont déclarés.
procedurename Obligatoire. Nom de l’événement ; suit les conventions de nom standard des variables.

La syntaxe et les éléments de l'argument arglist sont les suivants :

[ ByVal | ByRef ] varname [ ( ) ] [ Astype ]

Élément Description
ByVal Optional. Indique que l’argument est transmis par valeur.
ByRef Optional. Indique que l’argument est transféré par référence. ByRef est la valeur par défaut dans VBA, contrairement à Visual Basic .NET.
varname Obligatoire. Nom de la variable représentant l’argument transmis à la procédure ; respecte les conventions de nom standard des variables.
type Optional. Type de données de l’argument transmis à la procédure ; peut prendre les valeurs Byte (octet), Boolean (booléen), Integer (entier), Long, Currency (devise), Single (simple), Double (double), Decimal (décimal, actuellement non pris en charge), Date, String (chaîne, longueur variable uniquement), Object (objet), Variant (variant), un type défini par l’utilisateur ou un type d’objet.

Remarques

Une fois l’événement déclaré, utilisez l’instruction RaiseEvent pour déclencher l’événement. Une erreur de syntaxe se produit s’il existe une déclaration Event dans un module standard. Il n’est pas possible de déclarer un événement pour qu’il renvoie une valeur. Un événement classique peut être déclaré et déclenché comme indiqué dans les fragments suivants.

' Declare an event at module level of a class module 
 
Event LogonCompleted (UserName as String) 
 
Sub 
 RaiseEvent LogonCompleted("AntoineJan") 
End Sub

Remarque

Vous pouvez déclarer les arguments des événements comme pour les arguments de procédure, à ces quelques exceptions près : les événements ne peuvent pas contenir d’arguments nommés, d’arguments Optional ou d’arguments ParamArray. Les événements n’ont pas de valeurs de retour.

Exemple

L’exemple suivant utilise des événements pour compter les secondes pendant une démonstration de la course de 100 mètres la plus rapide. Le code illustre toutes les méthodes, propriétés et instructions liées à l’événement, notamment l’instruction Event.

La classe qui déclenche un événement est la source de l’événement et les classes qui implémentent l’événement sont les récepteurs. Une source d’événement peut avoir plusieurs récepteurs pour les événements qu’elle génère. Lorsque la classe déclenche l’événement, ce dernier se déclenche sur chaque classe qui a été élue en tant que récepteur d’événements pour cette instance de l’objet.

L’exemple utilise également un formulaire (Form1) avec un bouton (Command1), une étiquette (Label1) et deux zones de texte (Text1 et Text2). Lorsque vous cliquez sur le bouton, la première zone de texte affiche « À partir de maintenant » et la deuxième commence à compter les secondes. Lorsque le temps plein (9,84 secondes) s’est écoulé, la première zone de texte affiche « Jusqu’à présent » et la seconde affiche « 9,84 ».

Le code spécifie les états initial et terminal du formulaire. Il contient également le code exécuté lors du déclenchement des événements.

Option Explicit 
 
Private WithEvents mText As TimerState 
 
Private Sub Command1_Click() 
 Text1.Text = "From Now" 
 Text1.Refresh 
 Text2.Text = "0" 
 Text2.Refresh 
Call mText.TimerTask(9.84) 
End Sub 
 
Private Sub Form_Load() 
 Command1.Caption = "Click to Start Timer" 
 Text1.Text = "" 
 Text2.Text = "" 
 Label1.Caption = "The fastest 100 meter run took this long:" 
 Set mText = New TimerState 
 End Sub 
 
Private Sub mText_ChangeText() 
 Text1.Text = "Until Now" 
 Text2.Text = "9.84" 
End Sub 
 
Private Sub mText_UpdateTime(ByVal dblJump As Double) 
 Text2.Text = Str(Format(dblJump, "0")) 
 DoEvents 
End Sub

Le code restant est dans un module de classe nommé TimerState. Les instructions Event déclarent les procédures lancées au déclenchement des événements.

Option Explicit 
Public Event UpdateTime(ByVal dblJump As Double)
Public Event ChangeText() 
 
Public Sub TimerTask(ByVal Duration As Double) 
 Dim dblStart As Double 
 Dim dblSecond As Double 
 Dim dblSoFar As Double 
 dblStart = Timer 
 dblSoFar = dblStart 
 
 Do While Timer < dblStart + Duration 
 If Timer - dblSoFar >= 1 Then 
 dblSoFar = dblSoFar + 1 
 RaiseEvent UpdateTime(Timer - dblStart) 
 End If 
 Loop 
 
 RaiseEvent ChangeText 
 
End Sub

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.