formateur informatique

Déclencher des info-bulles au survol de la souris

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Déclencher des info-bulles au survol de la souris
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 :


Aides à la saisie

Pour accompagner l'utilisateur dans le renseignement des champs d'un formulaire, par exemple d'un formulaire d'inscription, il est intéressant de pouvoir lui adresser des indications complémentaires, sous forme d'infobulles assimilées, pour qu'aucun doute ne subsiste. Et c'est ainsi que nous assurons une majorité de transformations d'essais d'inscriptions.

Afficher des aides contextuelles sous forme d-infobulles sur un formulaire Access

Sur l'exemple illustré par la capture, nous travaillons à partir d'un formulaire de gestion de biens immobiliers, plus précisément pour insérer de nouvelles offres. Dès que l'utilisateur pointe sur une zone ou un contrôle, avant même d'agir, une information complémentaire détaillée lui est livrée en bas du formulaire, sur fond jaune et en police rouge rubis. Il ne pourra pas dire qu'il n'a pas été informé.

Base de données Access à télécharger
Pour aboutir cette étude, nous suggérons de baser les travaux sur ce formulaire de gestion des biens immobiliers, déjà fonctionnel car issu d'une formation précédente.
  • Télécharger le fichier compressé commenter-zones-saisie.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,
  • 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 Ajout_biens,
Il permet de renseigner de nouvelles offres immobilières à insérer dans la table nommée Biens. En bas du formulaire, vous notez la présence d'une zone rectangulaire horizontale sur fond jaune chaleureux et bordurée d'un rouge rubis. Elle doit fournir ces indications contextuelles au fil de la démarche de l'utilisateur sur le formulaire. Mais pour l'instant, au survol de chacune des zones de ce dernier, elle reste muette.

L'attribut Remarque
Nous allons le constater, les indications complémentaires destinées à s'afficher en "info-bulles" existent déjà. Elles sont archivées dans un attribut particulier de chaque contrôle. Cet attribut se nomme Remarque et c'est une découverte que nous offre cette nouvelle 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 la première zone de texte,
En consultant sa feuille de propriétés, vous constatez qu'elle est nommée Ville.
  • Activer l'onglet Autres de cette feuille de propriétés,
Attribut Remarque des contrôles de formulaires Access pour infobulles

Maintenant, si vous consultez la propriété Remarque, tout en bas de cette feuille, vous découvrez qu'une information complémentaire est donnée, quant à l'utilité de cette zone. Il en va de même pour tous les autres contrôles de ce formulaire. Il vous suffit de les sélectionner tour à tour pour le constater.

La fonction VBA
Pour afficher ces informations complémentaires aux moments opportuns, nous proposons de faire intervenir le VBA. Nous pourrions aussi y parvenir par le biais des macros. L'idée est d'inscrire l'indication de l'attribut Remarque pour le contrôle survolé, dans le rectangle horizontal sur fond jaune, placé en bas du formulaire. Il est nommé detail. Pour cela, nous proposons de créer une fonction dans un module indépendant. Elle a besoin de deux renseignements à fournir en paramètres. Il s'agit de l'indication à inscrire et le nom du formulaire sur lequel il est question d'agir. Dès lors, à chaque déplacement de la souris sur l'un des contrôles, nous n'aurons plus qu'à appeler cette fonction en lui passant les informations attendues.
  • Dans le volet de navigation sur la gauche, double cliquer sur l'élément Module1,
  • Dans sa feuille de code au centre de l'écran, créer la fonction aide, comme suit :
Function aide(leForm As String,leTexte As String)

If Forms(leForm).Controls("detail").Caption <> leTexte Then Forms(leForm).Controls("detail").Caption = leTexte

End Function


Sur le formulaire dont le nom est passé en premier argument (Forms(leForm)), si l'intitulé (Caption) de la zone nommée detail (Controls("detail")) ne porte pas déjà le texte passé en second argument (<> leTexte), alors nous l'inscrivons effectivement dans cette zone. C'est ainsi que nous optimisons le code pour ne pas le déclencher inutilement mais aussi que nous évitons certains défauts d'affichage, comme de potentiels clignotements.

Info-bulle au survol
Maintenant que cette fonction existe, pour que l'indication complémentaire soit affichée au moment opportun pour l'utilisateur, nous devons l'appeler à chaque fois qu'un contrôle du formulaire est survolé par la souris. Donc, nous devons gérer autant de procédures événementielles que de contrôles qui doivent être décrits.
  • Enregistrer les modifications (CTRL + S) et revenir sur le formulaire en conception (ALT + Tab),
  • Cliquer sur la première zone de texte pour la sélectionner,
  • Activer alors l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton associé à son événement Sur souris déplacée,
  • Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
Nous retournons ainsi dans l'éditeur VBA Access. Mais cette fois, nous sommes propulsés dans la feuille de code associée au formulaire, plus précisément entre les bornes de la procédure événementielle Ville_MouseMove. Son code se déclenchera à chaque passage de la souris sur cette zone nommée Ville.
  • Dans les bornes de cette procédure, ajouter l'appel suivant :
Private Sub Ville_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, Ville.Tag
End Sub


Nous appelons la fonction en lui transmettant le nom du formulaire (Me.Name) ainsi que l'information à afficher dans sa zone nommée detail. Pour cela, nous récoltons la donnée inscrite dans son attribut Remarque qui est reconnu sous le nom de propriété Tag en VBA.

Le contrôle suivant sur le formulaire se nomme Prix.
  • En haut de l'éditeur, déployer la liste déroulante de gauche,
  • Dans les propositions, choisir le contrôle Prix,
  • Déployer alors la liste déroulante de droite,
  • Dans les propositions, choisir l'événement associé MouseMove,
Déclencher un code VBA Access au passage de la souris sur un contrôle du formulaire

C'est ainsi que nous créons la procédure événementielle prix_MouseMove. De fait, la précédente qui a été créée automatiquement (prix_BeforeUpdate), peut être effacée.
  • Dans cette nouvelle procédure, ajouter la ligne VBA suivante :
Private Sub prix_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, prix.Tag
End Sub


Le principe est le même, nous adaptons simplement l'indication à afficher, celle de la remarque. C'est le même protocole que nous devons maintenant répliquer pour tous les autres contrôles concernés, de manière à obtenir toutes les procédures événementielles nécessaires.

Private Sub ajouter_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, ajouter.Tag
End Sub

Private Sub Distance_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, distance.Tag
End Sub

Private Sub Exclu_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, Exclu.Tag
End Sub

Private Sub Garage_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, garage.Tag
End Sub

Private Sub nb_pieces_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, nb_pieces.Tag
End Sub

Private Sub Superficie_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, superficie.Tag
End Sub

Private Sub Terrain_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
aide Me.Name, Terrain.Tag
End Sub


Il pourrait aussi être judicieux d'ajouter une gestion au passage de la souris sur le cadre qui entoure les contrôles de manière à vider la zone detail quand plus aucun contrôle n'est survolé. Ce cadre se nomme Boite26.

Private Sub Boîte26_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If detail.Caption <> "" Then detail.Caption = ""
End Sub


Déclencher des infobulles au passage de la souris sur un formulaire Access

Maintenant, si vous enregistrez les modifications, que vous exécutez le formulaire et que vous survolez tour à tour les contrôles de ce dernier, vous avez le plaisir de constater que l'utilisateur est désormais parfaitement aiguillé. Il s'agit donc d'une solution intéressante pour peaufiner des applications professionnelles et ergonomiques.

 
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