formateur informatique

Masquer les messages d'avertissement en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Masquer les messages d'avertissement en VBA Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Couper les avertissements en VBA

Lorsque nous touchons au coeur des données, notamment par le biais de requêtes action, Access réagit en cumulant des boîtes de dialogue d'avertissement. Il s'agit de sécurités destinées à bien informer l'utilisateur qu'il est responsable des actions irréversibles qu'il est sur le point d'engager. Mais lorsque l'application est bien montée et que ces opérations sont bien maîtrisées, ces messages intermédiaires répétitifs sont laborieux et nuisent à l'ergonomie finale. Nous avions appris à les neutraliser par action de macro. Ici, nous allons voir comment les couper par le code VBA, dans le cadre du développement d'une application.

Base de données Access à télécharger
Pour démontrer cette astuce, nous proposons d'appuyer l'étude sur un formulaire d'inscription, insérant donc de nouvelles données dans une table source.
  • Télécharger le fichier compressé couper-avertissements.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier résultant pour l'ouvrir dans Access,
  • Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation sur la gauche, double cliquer sur le formulaire F_Inscription,
Ainsi, nous l'exécutons. Il attend les renseignements pour procéder à l'ajout d'un nouvel inscrit dans la table Utilisateurs.

Formulaire inscription Access

Toutes les inscriptions sont requises.
  • Définir une civilité avec la liste déroulante de la première zone,
  • Renseigner un nom puis un prénom,
  • Taper un identifiant nécessairement codé sur six chiffres,
  • Inscrire un mot de passe alphanumérique (chiffres et lettres) sur cinq caractères,
  • Puis, cliquer sur le bouton Valider,
Message avertissement sur formulaire Access avant inscription

Comme vous pouvez le voir, une première alerte surgit et pour cause, il est question d'insérer un nouvel enregistrement dans la table Utilisateurs. Et si vous validez cette alerte en cliquant sur le bouton Oui, une seconde prend le relai. Elle informe l'utilisateur que la nouvelle ligne va être insérée dans la table. Dans un processus maîtrisé, ces alertes sont dérangeantes et nous souhaitons les neutraliser. Si vous cliquez une nouvelle fois sur le bouton Oui, c'est alors une boîte de message programmée qui informe l'opérateur que l'inscription s'est déroulée avec succès. Vous pouvez facilement le constater en consultant la table source en mode feuille de données et en repérant le nouvel enregistrement inséré par le formulaire d'inscription.

Le code VBA du formulaire d'inscription
Nous proposons maintenant de découvrir le code VBA en place. Il est issu d'une macro convertie. Ses actions permettent d'articuler le formulaire d'inscription que nous avions mis en place à l'occasion d'une astuce.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur le bouton Valider pour le sélectionner,
  • Activer alors l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton situé à droite de son événement Au clic,
Nous basculons ainsi dans l'éditeur de code VBA Access, entre les bornes de la procédure événementielle Valider_Click.

Private Sub Valider_Click()
If (Len(Le_Nom) > 3 And Len(Prenom) > 3 And Len(Id) > 5 And Len(Mp) = 5 And Civ <> "") Then
If (DCount("[U_civilite]", "Utilisateurs", "[U_nom]&[U_prenom]=[Le_Nom] & [Prenom]") = 0) Then
If (DCount("[U_civilite]", "Utilisateurs", "[U_id]&[U_mp]=[Id] & [Mp]") = 0) Then
DoCmd.OpenQuery "R_Inscription", acViewNormal, acReadOnly
MsgBox "L'inscription s'est déroulée avec succès", vbOKOnly,""
DoCmd.SetProperty "Le_Nom", acPropertyValue, ""
DoCmd.SetProperty "Prenom", acPropertyValue, ""
DoCmd.SetProperty "Id", acPropertyValue, ""
DoCmd.SetProperty "Mp", acPropertyValue, ""
DoCmd.SetProperty "Civ", acPropertyValue, ""
Else
Beep
MsgBox "La paire Identifiant / Mot de passe existe déjà", vbOKOnly,""
End If
Else
Beep
MsgBox "L'utilisateur existe déjà !", vbOKOnly, ""
End If
Else
Beep
MsgBox "Tous les champs doivent être renseignés correctement", vbOKOnly, ""
End If
End Sub


Des vérifications sont faites sur la longueur des informations saisies avant d'accepter la suite du traitement. De même, des vérifications sont entreprises grâce à la fonction DCount pour vérifier que les paires Nom / Prénom et Identifiant / Mot de passe n'existent pas déjà. Si tous ces verrous sont levés, c'est la méthode OpenQuery de l'objet DoCmd qui exige l'exécution de la requête R_Inscription. Elle est présente dans le volet de navigation. Il s'agit d'une requête Ajout. Elle puise les renseignements sur le formulaire pour les ajouter dans un nouvel enregistrement de table. Après inscription, les zones du formulaire sont vidées grâce à la méthode SetProperty de l'objet DoCmd.

Masquer les boîtes de dialogue d'avertissement
C'est une méthode simple, toujours de l'objet DoCmd qui permet de couper les alertes d'Access. Mais elle doit surtout intervenir en amont des traitements entrepris pour les couper à la source. Cette méthode se nomme SetWarnings. Elle est l'équivalent de l'action de macro Avertissements.
  • Avant l'exécution de la requête par la méthode OpenQuery, ajouter l'instruction VBA suivante :
...
If (DCount("[U_civilite]", "Utilisateurs", "[U_id]&[U_mp]=[Id] & [Mp]") = 0) Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "R_Inscription", acViewNormal, acReadOnly
MsgBox "L'inscription s'est déroulée avec succès", vbOKOnly,""
...


Avec le booléen False passé en paramètre, nous demandons au code VBA d'intercepter ces messages pour ne plus les afficher.

Désormais, si vous enregistrez les modifications, que vous retournez sur le formulaire, que vous l'exécutez et que vous remplissez toutes les informations, après un clic sur le bouton Valider, seul le message de confirmation apparaît. Les alertes ont bel et bien disparu.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn