Une action, telle que le basculement d’un contrôle sur un objet vers un autre contrôle, peut déclencher différents événements qui se produisent dans une séquence particulière. Il est important de connaître les événements qui surviennent et dans quel ordre, car ceux-ci peuvent affecter les modalités d’exécution de vos macros ou procédures événementielles. Par exemple, si deux procédures événementielles doivent être exécutées dans un certain ordre, vous pouvez vérifier que les événements auxquels elles sont associées se produisent dans ce même ordre.
Contenu de cet article
Ordre des événements pour les contrôles sur les formulaires
Les événements se produisent pour les contrôles sur les formulaires lorsque vous déplacez le focus vers un contrôle, et lorsque vous modifiez et mettez à jour des données dans un contrôle.
Remarque : Microsoft Office Access affiche les noms d’événement légèrement différemment dans Visual Basic Editor et dans la feuille de propriétés et le Générateur de macro. Par exemple, l’événement Sur réception focus dans la feuille de propriétés du formulaire et le Générateur de macro est nommé GotFocus dans Visual Basic Editor. Dans cet article, les exemples utilisent le format VBA (Visual Basic pour Applications) pour les noms d’événement.
Déplacer le focus vers un contrôle
Lorsque vous déplacez le focus vers un contrôle sur un formulaire (par exemple, en ouvrant un formulaire contenant un ou plusieurs contrôles actifs ou en déplaçant le focus vers un autre contrôle sur le même formulaire), les événements Enter et GotFocus se produisent dans l’ordre suivant :
Entrez GotFocus
Lorsque vous ouvrez un formulaire, les événements Enter et GotFocus se produisent après les événements liés à l’ouverture du formulaire (par exemple, Open, Activate et Current), comme suit :
Ouvrir (formulaire) Activer (formulaire) Actuel (formulaire) Entrée (contrôle) GotFocus (contrôle)
Lorsque le focus est déplacé hors d’un contrôle sur un formulaire (par exemple, lorsque vous fermez un formulaire contenant un ou plusieurs contrôles actifs ou lorsque le focus est déplacé vers un autre contrôle sur le même formulaire), les événements Exit et LostFocus se produisent dans l’ordre suivant :
Quitter LostFocus
Lorsque vous fermez un formulaire, les événements Exit et LostFocus se produisent avant les événements liés à la fermeture du formulaire (par exemple, Unload, Deactivate et Close), comme suit :
Quitter (contrôle) LostFocus (contrôle) Unload (formulaire) Désactiver (formulaire) Fermer (formulaire)
Modification et mise à jour des données dans un contrôle
Lorsque vous entrez ou modifiez les données dans un contrôle sur un formulaire, puis déplacez le focus vers un autre contrôle, les événements BeforeUpdate et AfterUpdate se produisent :
BeforeUpdate Afte rUpdate
Les événements Exit et LostFocus pour un contrôle dont la valeur change se produisent après les événements BeforeUpdate et AfterUpdate :
BeforeUpdate AfterUpdate Quitter LostFocus
Lorsque vous modifiez le texte dans une zone de texte ou dans la section de zone de texte d’une zone de liste modifiable, l’événement Change se produit. Cet événement se produit lorsque le contenu du contrôle change, mais avant que vous ne déplaciez le focus vers un autre contrôle ou enregistrement (et par conséquent, avant que les événements BeforeUpdate et AfterUpdate ne se produisent). La séquence d’événements suivante se produit pour chaque touche sur laquelle vous appuyez dans une zone de texte ou dans la section de zone de texte d’une zone de liste modifiable :
KeyDown KeyPress Dirty Change KeyUp
L’événement NotInList se produit lorsque vous entrez une valeur dans une zone de liste modifiable qui ne figure pas dans la zone de liste modifiable, puis essayez de déplacer le focus vers un autre contrôle ou enregistrement. L’événement NotInList se produit après les événements de clavier et les événements Change pour la zone de liste modifiable, mais avant les événements pour n’importe quel autre contrôle ou le formulaire. Si la propriété LimitToList de la zone de liste modifiable est définie sur Yes, l’événement Error pour le formulaire se produit immédiatement après l’événement NotInList :
KeyDown KeyPress Dirty Change KeyUp NotInList 0 Error
Ordre des événements pour les enregistrements sur les formulaires
Des événements se produisent pour les enregistrements sur les formulaires lorsque vous déplacez le focus vers un autre enregistrement, mettez à jour des données dans un enregistrement, supprimez un ou plusieurs enregistrements existants, ou créez un enregistrement.
Déplacement du focus vers des enregistrements et mise à jour de données dans des enregistrements
Lorsque vous déplacez le focus vers un enregistrement existant sur un formulaire, entrez ou modifiez des données dans l’enregistrement, puis déplacez le focus vers un autre enregistrement, la séquence d’événements suivante se produit pour le formulaire :
Actuel (formulaire) BeforeUpdate (formulaire) AfterUpdate (formulaire) Actuel (formulaire)
Lorsque vous quittez l’enregistrement dont les données ont changé, mais avant d’accéder à l’enregistrement suivant, les événements Exit et LostFocus se produisent pour le contrôle ayant le focus. Ces événements se produisent après les événements BeforeUpdate et AfterUpdate pour le formulaire, comme suit :
BeforeUpdate (formulaire) AfterUpdate (formulaire) Exit (contrôle) LostFocus (contrôle) Current (formulaire)
Lorsque vous déplacez le focus entre les contrôles sur un formulaire, des événements se produisent pour chaque contrôle. Par exemple, les séquences suivantes d’événements se produisent lorsque vous effectuez les opérations suivantes :
-
Ouvrez un formulaire et modifiez des données dans un contrôle :
Current (form) Enter (control) GotFocus (control) BeforeUpdate (control) AfterUpdate (control)
-
Déplacez le focus vers un autre contrôle :
Exit (control1) LostFocus (control1) Enter (control2) GotFocus (control2)
-
Déplacez le focus vers un autre enregistrement :
BeforeUpdate (form) AfterUpdate (form) Exit (control2) LostFocus (control2) Current (formulaire)
Suppression d’enregistrements
Lorsque vous supprimez un enregistrement, les événements suivants se produisent pour le formulaire, et Microsoft Office Access affiche une boîte de dialogue vous demandant de confirmer la suppression :
Supprimer BeforeDelConfirm AfterDelConfirm
Si vous annulez l’événement Delete, les événements BeforeDelConfirm et AfterDelConfirm ne se produisent pas, et la boîte de dialogue n’apparaît pas.
Création d’un enregistrement
Lorsque vous déplacez le focus vers un nouvel enregistrement (vide) dans un formulaire, puis créez un enregistrement en entrant des données dans un contrôle, la séquence d’événements suivante se produit :
Current (form) Enter (control) GotFocus (control) BeforeInsert (form) AfterInsert (formulaire)
L’événement BeforeInsert (form) se déclenche dès que vous commencez à taper dans le contrôle. L’événement AfterInsert (form) se déclenche une fois que vous avez quitté l’enregistrement.
Les événements BeforeUpdate et AfterUpdate pour les contrôles sur le formulaire et pour le nouvel enregistrement se produisent après l’événement BeforeInsert et avant l’événement AfterInsert.
Ordre des événements pour les formulaires et sous-formulaires
Les événements se produisent pour les formulaires lorsque vous ouvrez ou fermez un formulaire, changez de formulaires ou utilisez des données sur un formulaire ou un sous-formulaire.
Ouverture ou fermeture d’un formulaire
Lorsque vous ouvrez un formulaire, la séquence suivante d’événements se produit pour le formulaire :
Ouvrir Charger Redimensionner Activer Actuel
S’il n’y a aucun contrôle actif sur le formulaire, l’événement GotFocus se produit pour le formulaire après l’événement Activate, mais avant l’événement Current.
Lorsque vous fermez un formulaire, la séquence suivante d’événements se produit pour le formulaire :
Décharger désactiver fermer
S’il n’y a aucun contrôle actif sur le formulaire, l’événement LostFocus se produit pour le formulaire après l’événement Unload, mais avant l’événement Deactivate.
Changement de formulaire
Lorsque vous basculez entre deux formulaires ouverts, l’événement Deactivate se produit pour le premier formulaire et l’événement Activate se produit pour le deuxième formulaire :
Désactiver (form1) Activer (form2)
L’événement Deactivate pour un formulaire se produit également lorsque vous basculez du formulaire vers un autre onglet objet dans Access. Toutefois, l’événement Deactivate ne se produit pas lorsque vous basculez vers une boîte de dialogue, vers un formulaire dont la propriété PopUp est définie sur Yes ou vers une fenêtre dans un autre programme.
Remarque : L’événement Open ne se produit pas si vous déplacez le focus vers un formulaire qui est déjà ouvert, même si vous avez déplacé le focus vers ce formulaire en effectuant une action OpenForm.
Utilisation des données sur un formulaire
Des événements de formulaire et de contrôle se produisent lorsque vous parcourez les enregistrements dans le formulaire et modifiez des données. Par exemple, lorsque vous ouvrez un formulaire pour la première fois, la séquence suivante d’événements se produit :
Ouvrir (formulaire) Charger (formulaire) Redimensionner (formulaire) Activer (formulaire) Actuel (formulaire) Entrée (contrôle)0 GotFocus (contrôle)
De même, lorsque vous fermez un formulaire, la séquence suivante d’événements se produit :
Quitter (contrôle) LostFocus (contrôle) Décharger (formulaire) Désactiver (formulaire) Fermer (formulaire)
Si vous avez modifié des données dans un contrôle, les événements BeforeUpdate et AfterUpdate pour le contrôle et le formulaire se produisent avant l’événement Exit pour le contrôle.
Utilisation des sous-formulaires
Lorsque vous ouvrez un formulaire contenant un sous-formulaire, le sous-formulaire et ses enregistrements sont chargés avant le formulaire principal. Par conséquent, les événements pour le sous-formulaire et ses contrôles (tels que Open, Current, Enter et GotFocus) se produisent avant les événements pour le formulaire. Toutefois, l’événement Activate ne se produit pas pour les sous-formulaires. Par conséquent, l’ouverture d’un formulaire principal déclenche un événement Activate pour le formulaire principal uniquement.
De même, lorsque vous fermez un formulaire contenant un sous-formulaire, le sous-formulaire et ses enregistrements sont déchargés après le formulaire. L’événement Deactivate ne se produit pas pour les sous-formulaires. Par conséquent, le fermeture d’un formulaire principal déclenche un événement Deactivate pour le formulaire principal uniquement. Les événements pour les contrôles, le formulaire et le sous-formulaire se produisent dans l’ordre suivant :
-
Événements pour les contrôles du sous-formulaire (tels que Exit et LostFocus)
-
Événements pour les contrôles du formulaire (notamment le contrôle de sous-formulaire)
-
Événements pour le formulaire (par exemple, Deactivate et Close)
-
Événements pour le sous-formulaire
Remarque : Étant donné que les événements pour un sous-formulaire se produisent après la fermeture du formulaire principal, certains événements, tels que l’annulation de la fermeture du formulaire principal à partir d’un événement dans le sous-formulaire ne se produiront pas. Vous devrez peut-être déplacer ces types de tests de validation vers un événement sur le formulaire principal.
Ordre des événements pour les séquences de touches et les clics de souris
Les événements de clavier se produisent pour les formulaires et contrôles lorsque vous appuyez sur des touches ou envoyez des séquences de touches alors que le focus est placé sur le formulaire ou le contrôle. Les événements de souris se produisent pour les formulaires, les sections de formulaire et les contrôles sur les formulaires lorsque vous cliquez sur les boutons de la souris, alors que le pointeur de la souris se trouve sur un formulaire, une section ou un contrôle. Les événements de souris peuvent également se produire lorsque vous déplacez le pointeur de la souris sur un formulaire, une section ou un contrôle.
Événements de clavier
Lorsque vous appuyez sur une touche avant de la relâcher alors que le focus est placé sur un contrôle sur un formulaire (ou vous utilisez l’action SendKeys ou instruction pour envoyer une séquence de touches), la séquence d’événements suivante se produit :
KeyDown KeyPress KeyUp
Lorsque vous appuyez et relâchez une touche ou que vous envoyez une séquence de touches dans le jeu de caractères ANSI, les événements KeyDown, KeyPress et KeyUp se produisent tous. Si vous appuyez de façon longue sur une touche ANSI, les événements KeyDown et KeyPress alternent à plusieurs reprises (KeyDown, KeyPress, KeyDown, KeyPress, et ainsi de suite) jusqu’à ce que vous relâchez la touche ; l’événement KeyUp se produit.
Si vous appuyez sur une touche non ANSI avant de la relâcher, les événements KeyDown et KeyUp se produisent. Si vous maintenez une touche non ANSI enfoncée, l’événement KeyDown se produit à plusieurs reprises jusqu’à ce que vous relâchiez la touche, puis l’événement KeyUp se produit.
Si l’utilisation d’une touche déclenche un autre événement pour un contrôle, cet événement se produit après l’événement KeyPress, mais avant l’événement KeyUp. Par exemple, si une frappe modifie le texte dans une zone de texte et déclenche un événement Change, la séquence d’événements suivante se produit :
KeyDown KeyPress Change KeyUp
Si une frappe déplace le focus d’un contrôle vers un autre contrôle, l’événement KeyDown se produit pour le premier contrôle, tandis que les événements KeyPress et KeyUp se produisent pour le deuxième contrôle. Par exemple, si vous modifiez des données dans un contrôle, puis appuyez sur Tab pour atteindre le contrôle suivant, les séquences d’événements suivantes se produisent :
-
Premier contrôle :
KeyDown BeforeUpdate AfterUpdate Exit LostFocus
-
Deuxième contrôle :
Entrez GotFocus KeyPress KeyUp
Événements de souris
Lorsque vous cliquez sur un bouton de la souris avant de le relâcher avec le pointeur de souris placé sur un contrôle sur un formulaire, la séquence d’événements suivante se produit pour le contrôle :
MouseDown MouseUp Click
Si le focus est placé sur un contrôle et que vous cliquez sur un autre contrôle pour déplacer le focus vers ce deuxième contrôle, les séquences d’événements suivantes se produisent :
-
Premier contrôle :
Quitter LostFocus
-
Deuxième contrôle :
Entrez GotFocus MouseDown MouseUp Click
Si vous accédez à un autre enregistrement, puis cliquez sur un contrôle, l’événement Current pour le formulaire se produit également avant l’événement Enter pour le contrôle.
Le fait de double-cliquer sur un contrôle déclenche les événements Click et DblClick. Par exemple, lorsque vous double-cliquez sur un contrôle autre qu’un bouton de commande, la séquence d’événements suivante se produit pour le contrôle :
MouseD propre MouseUp Click DblClick MouseUp
Lorsque vous double-cliquez sur un bouton de commande, la séquence d’événements précédente se produit, suivie d’un deuxième événement Click.
L’événement MouseMove pour un formulaire, une section ou un contrôle se produit lorsque vous déplacez le pointeur de la souris sur le formulaire, la section ou le contrôle. Cet événement est indépendant des autres événements de souris.
Ordre des événements pour les états et sections d’état
Des événements se produisent pour les états et sections d’état lorsque vous ouvrez un état pour l’imprimer ou en afficher un aperçu, ou que vous fermez un état.
Événements pour les états
Lorsque vous ouvrez un état pour l’imprimer ou en afficher un aperçu, avant de le fermer ou d’accéder à un autre onglet objet dans Access, la séquence d’événements suivante se produit pour l’état :
Ouvrir Activer Fermer Désactiver
Lorsque vous basculez entre deux états ouverts, l’événement Deactivate se produit pour le premier état et l’événement Activate se produit pour le deuxième état :
Désactiver (report1) Activer (rapport2)
L’événement Deactivate pour un état se produit également lorsque vous basculez de l’état vers un autre onglet objet dans Access. Toutefois, l’événement Deactivate ne se produit pas lorsque vous basculez vers une boîte de dialogue, vers un formulaire dont la propriété PopUp est définie sur Yes ou vers une fenêtre dans un autre programme.
Lorsque vous ouvrez un état basé sur une requête, Access déclenche l’événement Open pour l’état avant d’exécuter la requête sous-jacente. Par conséquent, vous pouvez définir les critères pour l’état à l’aide d’une macro ou d’une procédure événementielle qui répond à l’événement Open. Par exemple, la macro ou procédure événementielle peut ouvrir une boîte de dialogue personnalisée dans laquelle vous entrez des critères d’état.
Événements pour les sections d’état
Lorsque vous imprimez un état ou en affichez un aperçu, les événements Format et Print se produisent pour les sections d’état après les événements Open et Activate pour l’état et avant les événements Close ou Deactivate de l’état :
Ouvrir (rapport) Activer (rapport) Format (section rapport) Imprimer (section rapport) Fermer (rapport) Désactiver (rapport)
Sécurité Vous pouvez utiliser la vue Rapport pour activer le filtrage utilisateur des rapports. Toutefois, contrairement à l’aperçu avant impression, les événements Format et Impression d’une section ne se produisent pas en mode Rapport. Cela s’applique également aux résultats des fonctions VBA et aux procédures définies par l’utilisateur qui s’affichent dans les contrôles (par exemple, les légendes d’étiquette, les status d’affichage, la mise en forme conditionnelle, le redimensionnement des contrôles, etc.) dans ces événements. Par conséquent, n’utilisez pas de code dans cet événement pour mettre en forme, masquer ou imprimer des données confidentielles qui peuvent être exposées. Nous vous recommandons de préfiltrer les données ou de désactiver l’aperçu du rapport en définissant la propriété AllowReportView sur Non.
En outre, les événements suivants peuvent se produire pendant ou après la mise en forme, mais avant l’événement Print :
-
L’événement Retreat se produit lorsque Access revient à une section précédente dans le cadre de la mise en forme de l’état.
-
L’événement NoData se produit si aucun enregistrement n’est affiché par l’état.
-
L’événement Page se produit après la mise en forme, mais avant l’impression. Vous pouvez utiliser cet événement pour personnaliser l’apparence de l’état imprimé.