Événement Application.ProjectBeforeTaskChange (Project)

Se produit avant que l'utilisateur ne change la valeur d'un champ de tâche.

Syntaxe

expression. ProjectBeforeTaskChange( _tsk_, _Field_, _NewVal_, _Cancel_ )

expressionUne variable qui représente un objetApplication.

Paramètres

Nom Requis/Facultatif Type de données Description
Tsk Requis Tâche Tâche dont le champ est modifié.
Champ Obligatoire Long Champ modifié. Si l'utilisateur modifie plusieurs champs, l'événement est déclenché pour chacun d'eux. Il peut s’agir de l’une des constantes PjField .
NewVal Requis Variant Nouvelle valeur pour le champ spécifié par Champ.
Cancel Obligatoire Booléen False lorsque l'événement se produit. Si la procédure événementielle affecte la valeur True à cet argument, la valeur du champ spécifié par Field reste inchangée.

Remarques

Les événements de projet ne se produisent pas lorsque le projet est incorporé dans un autre document ou une autre application.

L’événement ProjectBeforeTaskChange ne se produit pas lorsque des données chronologiques ou des données de contrainte dans le formulaire détaillé de tâche sont modifiées, lorsqu’une tâche est fractionnée via la manipulation de sa barre de tâche dans le Diagramme de Gantt, lorsque des modifications sont apportées au niveau ou au numéro hiérarchiques, lorsqu’une planification initiale est enregistrée ou effacée, lorsqu’une ligne entière de tâches est collée, pendant les opérations sur les listes de ressources, lors de l’insertion ou de la suppression d’un sous-projet ou lorsque des modifications ont été apportées à l’aide d’un formulaire personnalisé. Pour accéder à des informations supplémentaires et consulter un exemple de code de création et de test d’un gestionnaire d’événements, voir Utilisation des événements avec les objets Application et Project.

Exemple

L’exemple suivant indique à l’utilisateur quand la durée d’une tâche augmente et de combien. Cet exemple requiert un nouveau module de classe et du code supplémentaire pour fonctionner.

Private Sub App_ProjectBeforeTaskChange(ByVal tsk As Task, ByVal Field As PjField, _ 
    ByVal NewVal As Variant, Cancel As Boolean) 
 
    Dim TaskDuration As Long 
 
    TaskDuration = Val(NewVal) * 480 ' Convert days to minutes 
 
    If Field = pjTaskDuration And TaskDuration > tsk.Duration Then 
        If (TaskDuration - tsk.Duration) \ 480 < 1 Then 
            MsgBox "The task " & Chr$(34) & tsk.Name & Chr$(34) & " is now " & _ 
                (TaskDuration - tsk.Duration) / 480 & (TaskDuration - tsk.Duration) \ 480 & _ 
                " day(s) longer." 
        Else 
            MsgBox "The task " & Chr$(34) & tsk.Name & Chr$(34) & " is now " & _ 
               (TaskDuration - tsk.Duration) / 480 & " day(s) longer." 
        End If 
    End If 
End Sub

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.