Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Texte défilant sur Formulaire
Pour attirer l'attention sur des outils ou des actions importantes, cette
astuce Access montre comment réaliser des petits
effets d'animation sur un formulaire.
Dans l'exemple illustré par la capture, un message défile (Navigation en cours), de la gauche vers la droite, au-dessus de la
barre de navigation personnalisée. Certes, cet
effet d'animation n'est pas d'une utilité à toute épreuve. Mais pour la mise en place de l'
astuce, cet exemple fera parfaitement l'affaire.
Base de données source
Pour la démonstration de cette
astuce, nous suggérons de récupérer une
base de données proposant ce
formulaire déjà abouti.
- Télécharger le fichier texte-defilant-sur-formulaire.rar en cliquant sur ce lien,
- Le décompresser dans le dossier de votre choix,
- Double cliquer sur la base de données résultante pour l'ouvrir avec Access,
- Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
- Dans le volet de navigation, sur la gauche de l'écran, cliquer droit sur le formulaire f_com,
- Dans le menu contextuel, choisir le mode création,
Nous basculons ainsi dans la vue en conception du
formulaire. Vous notez effectivement la présence d'un rectangle rempli de gris au-dessus des
boutons de navigation. Et dans ce rectangle, un label (étiquette) présente un texte figé :
Navigation en cours. C'est lui que nous devons animer. Et pour cela, un léger
code VBA Access sera nécessaire.
- Cliquer sur cette étiquette pour la sélectionner,
- Puis, activer l'onglet Autres de sa feuille de propriétés,
La
feuille de propriétés est généralement placée sur la droite de l'écran. Si elle n'est pas visible sur votre espace de travail, vous devez cliquer sur le
bouton du même nom dans le
ruban contextuel Création.
En consultant la
propriété Nom, vous remarquez que cette étiquette est intitulée
Msg. Ce nom est important pour piloter le contrôle par le
code VBA, et notamment pour faire défiler son message.
Minuterie du formulaire
C'est la
minuterie du formulaire qui permet de gérer les intervalles et
incréments de temps. C'est en fonction de ces incréments que nous pouvons déplacer le message au fur et à mesure. Et cette
minuterie est un
événement naturellement géré par un
formulaire Access.
- Cliquer sur le carré grisé à l'intersection des règles, en haut à gauche du formulaire Access,
De cette manière, nous désignons explicitement le
formulaire comme l'objet sélectionné.
- Activer alors l'onglet Evénement de sa feuille de propriétés,
- Régler sa propriété Intervalle minuterie à 100,
Par défaut, cet intervalle est réglé à 0. Cela signifie que les
incréments de temps ne sont pas gérés. Avec cette valeur, nous allons produire un
événement toutes les 100 millisecondes, soit tous les uns dixièmes de secondes. L'intervalle est suffisamment réduit pour produire un
effet d'animation.
- Juste au-dessus, cliquer dans la zone de son événement Sur minuterie,
- Dès lors, cliquer sur le petit bouton qui se propose à l'extrémité droite,
- Dans la boîte de dialogue, choisir le générateur de code puis valider par Ok,
Nous basculons ainsi dans l'
éditeur de code VBA Access entre les bornes de la
procédure événementielle Form_Timer. L'
objet Form désigne le
formulaire.
Timer est l'événement de sa
minuterie. Tout
code VBA inscrit entre ces bornes se déclenchera donc toutes les 100 millisecondes.
- Entre les bornes de la procédure événementielle, saisir le code VBA suivant :
Private Sub Form_Timer()
Msg.Caption = Right(Msg.Caption, Len(Msg.Caption)- 1) & Left(Msg.Caption, 1)
End Sub
Ce
code est destiné à faire tourner le message sur lui-même, lettre à lettre. Nous inscrivons le résultat dans le
contrôle Msg, grâce à sa
propriété Caption que nous affectons. Pour cette affectation, nous exploitons tout d'abord la
fonction Right. Celle-ci permet de prélever les caractères d'une chaîne de texte par la droite, soit par la fin. Cette chaîne est le texte inscrit dans le
contrôle Msg (
Msg.Caption). En second argument de la
fonction Right, nous précisons la longueur du prélèvement grâce à la
fonction Len qui retourne le nombre total de caractères compris dans le message du
contrôle Msg. Comme nous lui retranchons une unité, nous prélevons tous les caractères sauf le premier restant à chaque passage. Puis, grâce à la
fonction Left, nous concaténons cette découpe avec cette première lettre ignorée que nous basculons en fin de chaîne. Ainsi, toutes les 100 millisecondes, chaque première lettre restant après traitement, sera basculée en fin de texte. Nous donnerons ainsi l'illusion que le message tourne en boucle autour de lui-même. Nous proposons de le constater.
- Enregistrer les modifications (CTRL + S) et fermer l'éditeur de code,
- De retour sur le formulaire, l'enregistrer à son tour,
- Puis, l'exécuter avec la touche F5 du clavier par exemple,
Comme vous pouvez le voir, le message tourne en effet en boucle autour de lui-même. Pour un effet plus réussi, il s'agirait de centrer le
label sur le
rectangle depuis le
formulaire en conception. Mais nous souhaitions seulement aborder l'
astuce de cet effet tout à fait spécifique. L'
animation qui nous intéresse réellement consiste à faire
défiler le texte de la gauche vers la droite, puis de reprendre au début dès lors que la limite du rectangle est atteinte.
- A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans la liste des propositions, choisir le mode création,
- Cliquer sur la case grisée en haut à gauche du formulaire pour le sélectionner,
- Dans la feuille de propriétés, cliquer sur le petit bouton de son événement Sur minuterie,
Comme une procédure lui est déjà associée, nous retournons directement dans l'
éditeur VBA Access.
- Entre les bornes de la procédure événementielle, remplacer l'instruction par les suivantes :
Private Sub Form_Timer()
Msg.Left = Msg.Left + 100
If Msg.Left > 6150 Then Msg.Left = 350
End Sub
Toutes les 100 millisecondes, nous incrémentons la position horizontale (
Propriété Left) du
contrôle Msg de 100 points. Lorsque la valeur seuil de la limite du rectangle est atteinte (
If Msg.Left > 6150), nous replaçons le Label sur saposition de départ (
Msg.Left = 350) pour qu'il reprenne son
défilement horizontal. Attention, en
Vba les positions sont considérées en points et non en cm d'où les conversions pour les bornes gauche et droite.
- Enregistrer les modifications puis fermer l'éditeur de code VBA Access,
- De retour sur le formulaire, l'enregistrer à son tour puis l'exécuter,
Comme vous le constatez, le message défile effectivement de gauche à droite et reprend sa course depuis sa position d'origine dès lors que la fin du rectangle est atteinte. Et c'est un
code VBA très simple qui a permis d'aboutir cette
astuce.