Utilisation d’événements avec des objets Application et Projet
Vous pouvez écrire des procédures événementielles au niveau application ou au niveau projet. Par exemple, l’événement Activate se produit au niveau projet lors de l’activation d’un projet, et l’événement NewProject au niveau application lors de la création d’un projet.
Les procédures événementielles dans l’objet Projet sont disponibles pour tout projet ouvert. Pour écrire des procédures événementielles pour l’objet Application, vous devez créer un objet en utilisant le mot clé WithEvents dans un module de classe. Les étapes suivantes montrent comment créer et tester un gestionnaire d’événements application simple :
Dans Visual Basic Editor, dans le menu d’options pour ProjetVBA, sélectionnez Insérer, puis Module de classe pour créer une classe nommée Classe1. Vous pouvez renommer le module de classe dans le volet Propriétés. Dans les exemples suivants, la classe est nommée TestClass.
Collez le code suivant dans le module TestClass.
Option Explicit
Public WithEvents oApp As Application
Private Sub oApp_NewProject(ByVal pj As Project)
MsgBox "You created the " & pj.Name & " project."
End Sub
Private Sub Class_Initialize()
' Add class initialization statements here, if needed.
End Sub
- Ouvrez le module ThisProject, puis collez le code suivant.
Option Explicit
Private tClass As New TestClass
Sub TestNewProjectEvent()
Set tClass.oApp = Application
tClass.oApp.Projects.Add
Projects.Add
End Sub
- Exécutez la macro TestNewProjectEvent. La macro appelle deux fois la méthode Projects.Add ; une fois via l’objet TestClass et une fois directement via l’objet Application. Lorsque l’application Project crée le premier projet, la boîte de dialogue Microsoft Project affiche le message You created the Project2 project (Vous avez créé le projet Project2). Lorsque vous choisissez OK, Project crée le second projet et affiche une autre boîte de dialogue avec le message You created the Project3 project (Vous avez créé le projet Project3).
Important Pour les événements au niveau de l’application, inscrivez les gestionnaires d’événements après avoir défini Application.Visible = True
.
Si vous instanciez Project à partir d’une autre application et inscrivez un événement au niveau application avant de définir la propriété Visible de l’objet Application sur True, les propriétés et méthodes des objets enfants d’Application ne fonctionnent pas. Par exemple, Application.ActiveProject.Name
n’est pas accessible.
Remarque : un code d’événement dans votre projet peut s’exécuter de façon inattendue ou être bloqué s’il existe un code d’événement dans le fichier global (Global.mpt).
Si les fichiers global et du projet contiennent tous deux du code pour un événement, seul le code d’événement figurant dans le projet s’exécute.
Si le code pour un événement n’existe pas dans un projet, mais il existe dans le fichier global, le code de l’événement global s’exécute.
Si, pour l’un des trois événements Application.ProjectBeforeClose, Application.ProjectBeforeSave ou Project.Open existe dans le fichier global, mais pas dans le projet, il affecte tant le fichier global que le fichier du projet. S’il existe un code pour ces événements tant dans le fichier global que dans le fichier du projet, le code figurant dans le fichier global affecte le fichier global, et le code figurant dans le fichier du projet affecte le projet.
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.