Réponse aux événements d'un objet
Si votre application répond aux événements des objets Visual Basic, elle peut aussi répondre à ceux d'un objet fourni par un composant ActiveX. Votre application Visual Basic peut, par exemple, afficher un message quand un événement se produit dans un classeur Microsoft Excel.
Vous commandez à votre application de répondre aux événements d'un objet en ajoutant du code à une procédure d'événement de l'objet. Cependant, les procédures d'événement des objets fournis par des composants ne sont pas automatiquement disponibles dans Visual Basic. Vous devez d'abord déclarer une variable objet à l'aide du mot clé WithEvents.
Après avoir déclaré une variable objet avec WithEvents, la fenêtre de code Visual Basic utilise la variable pour afficher les procédures d'événement de l'objet. Vous pouvez ensuite ajouter du code à ces procédures d'événement pour répondre aux événements de l'objet. Quand vous affectez une référence d'objet à la variable, vous établissez une connexion entre la variable et l'objet au moment de l'exécution.
Pour créer une procédure d'événement pour un objet fourni par un composant
Ajoutez une référence à la bibliothèque de types du composant dans votre projet Visual Basic. Pour plus d'informations sur l'ajout d'une référence à une bibliothèque de types, reportez-vous à la section « Création d'une référence à un objet ».
Dans la section Déclarations d'un module de classe ou de feuille, déclarez une variable objet à l'aide du mot clé WithEvents. Par exemple :
Dim WithEvents xlBook As Excel.Workbook
Visual Basic ajoute le nom de la variable objet à la zone Objet de la fenêtre de code. Quand vous sélectionnez le nom de la variable, Visual Basic affiche les procédures d'événement de l'objet dans la zone de liste Procédures.
Sélectionnez une procédure d'événement, puis ajoutez du code à la procédure que votre application doit exécuter lorsque l'événement se produit.
Supposons, par exemple, que votre application Visual Basic repose sur des données affichées dans un classeur Microsoft Excel et que vous avez déjà déclaré une variable xlBook WithEvents pour le classeur. Quand un utilisateur essaie de fermer le classeur, vous pouvez afficher un message et empêcher la fermeture du classeur en ajoutant le code suivant à la procédure d'événement xlBook_BeforeClose dans votre application :
Private Sub xlBook_BeforeClose(Cancel As Boolean)
' Masque la fenêtre Microsoft Excel afin
' d'afficher le message.
xlBook.Application.Visible = False
' Affiche le message.
MsgBox "Ce classeur doit rester ouvert."
' Affiche la fenêtre Microsoft Excel.
xlBook.Application.Visible=True
' Affecte la valeur True à l'argument Cancel
' de la procédure d'événement pour annuler
' l'événement.
Cancel = True
End Sub
Affectez une référence d'objet à la variable objet WithEvents.
Vous pouvez, par exemple, ajouter le code suivant à la procédure d'événement Form_Load de la feuille Visual Basic pour affecter à la variable xlBook une référence à un classeur Microsoft Excel nommé Sales.xls :
Private Sub Form_Load()
Set xlBook = GetObject("Sales.xls")
' Affiche la fenêtre Microsoft Excel
' et la feuille de travail.
xlBook.Application.Visible = True
xlBook.Windows(1).Visible = True
End Sub
Partager