formateur informatique

Faire défiler un texte sur un formulaire Access

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Faire défiler un texte sur un formulaire Access
Livres à télécharger


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


Inscription Newsletter    Inscription Newsletter
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.

Formulaire Access avec effet d-animation pour texte défilant

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.

Nom du contrôle de formulaire Access pour message défilant

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,
Sélectionner tout le formulaire Access pour le paramétrer

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,
Animation d-un message défilant sur un formulaire Access



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,
Animer un texte défilant sur un formulaire Access par le code VBA



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.

 
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