Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Agrandir la vue au clic
Pour des raisons de commodité, il est toujours intéressant d'ajouter des fonctionnalités ergonomiques sur un
formulaire Access.
Sur l'exemple illustré par la capture, l'utilisateur travaille à partir d'un
formulaire des clients. Une zone est remarquable. Elle permet la mise en valeur des textes car il s'agit d'un champ devant fournir des
informations détaillées sur le client. Comme ces données peuvent être très riches, il n'est pas question d'afficher cette zone avec des proportions démesurées. Mais au clic sur cette dernière, sa vue s'agrandit automatiquement pour offrir plus de confort de lecture. Un autre clic, n'importe où en dehors de cette zone, la replie sur ses dimensions d'origine.
Base de données Access à télécharger
Pour développer cette petite solution, nous proposons d'appuyer l'étude sur une
base de données offrant déjà ce
formulaire.
- Télécharger le fichier compressé agrandir-champs-clic.rar en cliquant sur ce lien,
- Le décompresser dans le dossier de votre choix,
- Double cliquer sur le fichier réceptionné 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 FClients,
Ainsi, nous l'exécutons et affichons les informations du premier client.
A ce stade bien sûr, si vous cliquez dans la zone du détail, rien ne se produit encore. Pour accéder à l'intégralité de son contenu, il faut utiliser l'ascenseur vertical sur la droite, ce qui n'est pas très confortable. En revanche, si vous double cliquez sur l'un de ses mots, vous constatez l'apparition d'une petite
barre contextuelle de mise en forme. Elle atteste donc que ce champ est bien formaté avec l'attribut
texte enrichi.
Au clic dans la zone
Nous allons le voir, l'idée et le code pour la mise en place de cette solution, sont tous simples.
- 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 grande zone de texte pour la sélectionner,
En consultant sa
feuille de propriétés, vous remarquez que ce contrôle porte l'intitulé
note. Nous devons gérer son
événement du clic puisque c'est sur cette action que cette zone doit s'agrandir.
- Activer l'onglet Evénement de sa feuille de propriétés,
- Cliquer sur le petit bouton associé à son événement Au clic,
- Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
Nous basculons ainsi dans l'
éditeur VBA Access, entre les bornes de la
procédure événementielle note_Click. Son code se déclenchera au clic de l'utilisateur dans cette zone de texte. Dans un premier temps, nous proposons d'y faire une vérification utile. Il s'agit de prélever les actuelles dimensions de ce contrôle. En effet, il sera question de les restituer sur désactivation pour replier ce champ.
- Dans cette procédure événementielle, ajouter la ligne de code suivante :
...
MsgBox note.Width & "-" & note.Height
...
Au clic et par le biais d'un MsgBox, nous affichons simplement la
largeur initiale (propriété Width) ainsi que la
hauteur initiale (propriété Height) de la zone de texte.
- Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
- Exécuter ce dernier, par exemple avec la touche F5 du clavier,
- Puis, cliquer dans la grande zone de texte,
Nous visualisons ainsi les dimensions actuelles de ce champ. Ce sont elles que nous devrons restituer pour dégager l'affichage, après consultation. Notez que nous aurions pu identifier ces valeurs directement depuis la
feuille de propriétés de ce contrôle, mais en cm et non en pt.
- Cliquer sur le bouton Ok de la boîte de dialogue pour revenir sur le formulaire,
- Puis, revenir dans l'éditeur VBA Access,
- Préfixer la ligne du MsgBox d'une apostrophe (') pour la passer en commentaire,
- En dessous, toujours dans la procédure, ajouter les deux instructions suivantes :
...
'MsgBox note.Width & "-" & note.Height
note.Width = 8000: note.Height = 2500
...
Nous les codons sur une même ligne grâce au séparateur deux points (:). Nous réaffectons les
propriétés Width et
Height de la zone de texte, sur des valeurs sensiblement plus grandes.
- Enregistrer les modifications et revenir sur le formulaire toujours en exécution,
- Puis, cliquer dans la zone de texte,
Comme vous pouvez le voir, elle s'agrandit de façon significative pour libérer automatiquement tout le visuel. Mais à ce stade, si vous activez une autre zone de saisie ou que vous cliquez sur le formulaire, ce champ enrichi ne recouvre pas ses dimensions d'origine. En conséquence, il devient gênant puisqu'il couvre d'autres contrôles et informations.
Réinitialiser les dimensions
Nous devons restaurer les dimensions de la zone enrichie sur la
perte du focus. Cet événement intervient lorsque l'utilisateur clique dans une autre zone de texte ou lorsqu'il valide une modification avec la touche Tab. Mais cette réinitialisation doit aussi intervenir
au clic sur l'arrière-plan du formulaire pour que tous les cas soient prévus.
- 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 grande zone de texte enrichi,
- Activer l'onglet Evénement de sa feuille de propriétés,
- Cliquer sur le bouton associé à son événement Sur perte focus,
- Dans la boîte de dialogue, choisir le Générateur de code et valider par Ok,
Nous revenons ainsi dans l'
éditeur VBA Access, mais cette fois entre les bornes de la
procédure événementielle note_LostFocus.
- Dans les bornes de la procédure, ajouter les deux instructions VBA suivantes :
...
note.Width = 6528: note.Height = 1104
...
Nous réinitialisons simplement les dimensions que nous avons constatées au début de cette formation.
Comme nous l'avons évoqué, nous devons faire de même au clic sur le formulaire.
- En haut de la feuille de code, déployer la liste déroulante de gauche,
- Dans les propositions, choisir l'objet intitulé Détail,
C'est ainsi que nous créons la
procédure Détail_Click. Détail est l'objet qui représente l'arrière plan du formulaire. C'est lui qui accueille tous les contrôles.
- Dans les bornes de cette procédure, reproduire la ligne de code précédente,
...
note.Width = 6528: note.Height = 1104
...
- Enregistrer les modifications et revenir sur le formulaire en conception,
- L'exécuter avec la touche F5 du clavier,
- Cliquer dans la grande zone de texte pour l'agrandir,
- Puis, enfoncer la touche Tab en haut à gauche du clavier,
Comme vous pouvez l'apprécier, la zone de saisie recouvre aussitôt ses dimensions d'origine puisque cette action au clavier a eu pour effet de donner le focus au contrôle suivant sur le formulaire. Le résultat est le même si vous cliquez directement dans un autre contrôle ou encore sur l'arrière-plan du formulaire.