Table of contents
TOC
Réduire la table des matières
Développer la table des matières

Événement Form.BeforeUpdate (Access)Form.BeforeUpdate Event (Access)

office 365 dev account|Dernière mise à jour: 14/03/2018
|
2 Collaborateurs

L’événement BeforeUpdate se produit avant la mise à jour des données modifiées d’un contrôle ou d’un enregistrement.The BeforeUpdate event occurs before changed data in a control or record is updated.

SyntaxeSyntax

expression.expression.BeforeUpdate(Cancel)BeforeUpdate(Cancel)

expression Variable qui représente un objet Form.expression A variable that represents a Form object.

ParamètresParameters

NomNameRequis/FacultatifRequired/OptionalType de donnéesData TypeDescriptionDescription
CancelCancelObligatoireRequiredIntegerIntegerCe paramètre détermine si l’événement BeforeUpdate se produit.The setting determines if the BeforeUpdate event occurs.Le fait de définir l’argument Cancel sur True (1) annule l’événement BeforeUpdate.Setting the Cancel argument to True (?1) cancels the BeforeUpdate event.

RemarquesRemarks

L’utilisation de Visual Basic ou d’une macro contenant l’action SetValue pour changer les données dans un contrôle ne déclenche pas ces événements pour le contrôle.Changing data in a control by using Visual Basic or a macro containing the SetValue action doesn't trigger these events for the control.Toutefois, si vous vous placez sur un autre enregistrement ou si vous sauvegardez l’enregistrement, l’événement BeforeUpdate du formulaire se produit.However, if you then move to another record or save the record, the form's BeforeUpdate event does occur.

Pour exécuter une macro ou une procédure événementielle quand cet événement survient, définissez la propriété BeforeUpdate sur le nom de la macro ou sur [Event Procedure].To run a macro or event procedure when this event occurs, set the BeforeUpdate property to the name of the macro or to [Event Procedure].

Cet événement ne s'applique pas aux boutons d'options, cases à cocher, boutons bascule d'un groupe d'options. Il s'applique uniquement au groupe d'options lui-même.This event does not apply to option buttons, check boxes, or toggle buttons in an option group. It applies only to the option group itself.

L’événement BeforeUpdate est déclenché quand un contrôle ou un enregistrement est mis à jour.The BeforeUpdate event is triggered when a control or record is updated.À l’intérieur d’un enregistrement, les données modifiées de chaque contrôle sont mises à jour quand le contrôle est désactivé ou quand l’utilisateur appuie sur la touche ENTRÉE ou sur la touche de tabulation.Within a record, changed data in each control is updated when the control loses the focus or when the user presses ENTER or TAB.Quand l’enregistrement est désactivé ou quand l’utilisateur clique sur Sauvegarder un enregistrement dans le menu Enregistrements, l’intégralité de l’enregistrement est mise à jour et les données sont enregistrées dans la base de données.When the focus leaves the record or if the user clicks Save Record on the Records menu, the entire record is updated, and the data is saved in the database.

Quand vous entrez de nouvelles données ou des données modifiées dans le contrôle d’un formulaire et que vous vous placez sur un autre enregistrement, ou que vous sauvegardez l’enregistrement en cliquant sur Sauvegarder un enregistrement dans le menu Enregistrements, l’événement AfterUpdate du formulaire se produit immédiatement après l’événement AfterUpdate du contrôle.When you enter new or changed data in a control on a form and then move to another record or save the record by clicking Save Record on the Records menu, the AfterUpdate event for the form occur immediately after the AfterUpdate event for the control.Quand vous vous placez sur un autre enregistrement, les événements Exit et LostFocus du contrôle se produisent, suivis par l’événement Current de l’enregistrement sur lequel vous vous êtes placé, et par les événements Enter et GotFocus du premier contrôle de cet enregistrement.When you move to a different record, the Exit and LostFocus events for the control occur, followed by the Current event for the record you moved to, and the Enter and GotFocus events for the first control in this record.Pour exécuter la macro ou la procédure événementielle AfterUpdate sans exécuter les macros ou procédures événementielles Exit et LostFocus, sauvegardez l’enregistrement à l’aide de la commande Sauvegarder un enregistrement située dans le menu Enregistrements.To run the AfterUpdate macro or event procedure without running the Exit and LostFocus macros or event procedures, save the record by using the Save Record command on the Records menu.

Les macros et procédures d'événement BeforeUpdate ne sont exécutées que si vous modifiez les données d'un contrôle. Cet événement ne survient pas lorsqu'une valeur change dans le contrôle calculé. Les macros et procédures d'événement BeforeUpdate d'un formulaire sont exécutées uniquement si vous modifiez les données d'un ou plusieurs contrôles de l'enregistrement.BeforeUpdate macros and event procedures run only if you change the data in a control. This event does not occur when a value changes in a calculated control. BeforeUpdate macros and event procedures for a form run only if you change the data in one or more controls in the record.

Pour les formulaires, vous pouvez utiliser l'événement BeforeUpdate pour annuler la mise à jour d'un enregistrement avant de passer à un autre enregistrement.For forms, you can use the BeforeUpdate event to cancel updating of a record before moving to another record.

Si l'utilisateur entre une nouvelle valeur dans le contrôle, le paramètre de propriété OldValue n'est pas modifié tant que les données n'ont pas été enregistrées (et que l'enregistrement n'a pas été mis à jour). Si vous annulez une mise à jour, la valeur de la propriété OldValue remplace la valeur existante du contrôle.If the user enters a new value in the control, the OldValue property setting isn't changed until the data is saved (the record is updated). If you cancel an update, the value of the OldValue property replaces the existing value in the control.

L’événement BeforeUpdate est fréquemment utilisé pour valider des données, notamment quand vous effectuez des validations complexes, telles que :You often use the BeforeUpdate event to validate data, especially when you perform complex validations, such as those that:

  • Celles qui sont liées à des conditions qui dépendent de plusieurs valeurs dans le formulaire.Involve conditions for more than one value on a form.

  • Celles qui affichent des messages d'erreur différents en fonction des données entrées.Display different error messages for different data entered.

  • Celles que l'utilisateur peut supplanter.Can be overridden by the user.

  • Celles qui contiennent des références à des contrôles d’autres formulaires ou des fonctions définies par l’utilisateur.Contain references to controls on other forms or contain user-defined functions.

Remarque

Pour effectuer des validations simples ou des validations plus complexes telles que demander une valeur dans un champ ou valider plusieurs contrôles d’un formulaire, vous pouvez utiliser la propriété ValidationRule pour les contrôles, et les propriétés ValidationRule et Required pour les champs et les enregistrements des tables.To perform simple validations, or more complex validations such as requiring a value in a field or validating more than one control on a form, you can use the ValidationRule property for controls and the ValidationRule and Required properties for fields and records in tables.

Une erreur d'exécution se produit si vous tentez de modifier des données contenues dans le contrôle qui a déclenché l'événement BeforeUpdate dans la procédure de l'événement.A run-time error will occur if you attempt to modify the data contained in the control that fired the BeforeUpdate event in the event's procedure.

ExempleExample

L’exemple suivant montre comment vous pouvez utiliser une procédure événementielle BeforeUpdate pour vérifier si un nom de produit a déjà été entré dans la base de données.The following example shows how you can use a BeforeUpdate event procedure to check whether a product name has already been entered in the database.Quand l’utilisateur tape un nom de produit dans la zone ProductName, la valeur est comparée au champ ProductName dans la table Products.After the user types a product name in the ProductName box, the value is compared to the ProductName field in the Products table.Si une valeur correspond à la recherche dans la table Products, un message s’affiche pour informer l’utilisateur que le produit a déjà été entré.If there is a matching value in the Products table, a message is displayed that informs the user that the product has already been entered.

Pour tester l’exemple, ajoutez la procédure événementielle suivante à un formulaire nommé Products contenant une zone de texte appelée ProductName.To try the example, add the following event procedure to a form named Products that contains a text box called ProductName.

Private Sub ProductName_BeforeUpdate(Cancel As Integer) 
    If(Not IsNull(DLookup("[ProductName]", _ 
        "Products", "[ProductName] ='" _ 
        &; Me!ProductName &; "'"))) Then 
        MsgBox "Product has already been entered in the database." 
        Cancel = True 
        Me!ProductName.Undo 
    End If 
End Sub

L’exemple suivant permet d’afficher un message quand un contrôle est vide dans un formulaire continu lorsqu’un utilisateur passe à un autre enregistrement.The following example shows how to display a message when a control is empty on a continuous form when a user moves to another record.

Exemple de code fourni par : Bill Jelen, MrExcel.comSample code provided by: Bill Jelen, MrExcel.com

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim oContr As Control
    For Each oContr In Me.Detail.Controls
        If IsNull(oContr) = True Then
            If MsgBox(oContr.Name &; " is empty", vbOKCancel) = vbCancel Then
                Cancel = True: oContr.SetFocus: Exit Sub
            End If
        End If
    Next oContr
End Sub

L’exemple suivant montre comment utiliser l’événement BeforeUpdate d’un formulaire pour demander à ce qu’une valeur soit entrée dans un des contrôles quand un autre contrôle inclut également des données.The following example shows how to use the BeforeUpdate event of a form to require that a value be entered into one control when another control also has data.

Exemple de code fourni par :Microsoft Access 2010 Programmer's ReferenceSample code provided by: The Microsoft Access 2010 Programmer's Reference

Private Sub Form_BeforeUpdate(Cancel As Integer)
If (IsNull(Me.FieldOne)) Or (Me.FieldOne.Value =  "") Then
    ' No action required
Else
    If (IsNull(Me.FieldTwo)) or (Me.FieldTwo.Value = "") Then
        MsgBox "You must provide data for field 'FieldTwo', " &; _
            "if a value is entered in FieldOne", _
            vbOKOnly, "Required Field"
        Me.FieldTwo.SetFocus
        Cancel = True
        Exit Sub
    End If
End If

End Sub

À propos des collaborateursAbout the contributors

Holy Macro! Books publie des livres divertissants pour les personnes qui utilisent Microsoft Office. Vous pouvez consulter le catalogue complet sur MrExcel.com.Holy Macro! Books publishes entertaining books for people who use Microsoft Office. See the complete catalog at MrExcel.com.

Wrox Press est guidé par la philosophie de programmeur à programmeur. Les livres Wrox sont écrits par des programmeurs pour des programmeurs et la marque Wrox est synonyme de solutions de référence aux problèmes de programmation concrets.Wrox Press is driven by the Programmer to Programmer philosophy. Wrox books are written by programmers for programmers, and the Wrox brand means authoritative solutions to real-world programming problems.

Voir aussiSee also

Form, objetForm Object

© 2018 Microsoft