Le Splash-Screen ou comment donner une touche professionnelle à vos applications.

Fabrice Constans

Qui n'a jamais rêvé de mettre en place les mêmes petites fenêtres qui apparaissent à l'ouverture des logiciels professionnels ? Si la présence de ces petites boîtes n'apportent pas de fonctionnalités supplémentaires, la facilité de mise en oeuvre, hormis l'aspect graphique, peut apporter un réel plus esthétique et pourquoi pas, faire un peu de publicité gratuite.

- Titre : Le Splash-Screen ou comment donner une touche professionnelle à vos applications.

- Auteur : Fabrice Constans

- Parution : 7 mai 2005

- Mise à jour : 1 octobre 2009

- Licence : Copyright ® 2005 Fabrice CONSTANS. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Avertissement

- II. Pré requis - Graphiques et textes

- II-A. L'image

- II-B. Le texte

- III. Le formulaire

- III-A. Mise au point visuelle

- III-B. Le code

- III-C. Afficher des informations supplémentaires

- III-D. Les réglages

- IV. Intégration du Splashscreen

- IV-A. Par Macro

- IV-B. Par l'option Formulaire de démarrage

- IV-C. Par procédure VBA

- V. Versions postérieures à Access 2000

- VI. Conseils

- VII. Remerciements

I - Avertissement

L'utilisation de la touche F1 est vivement conseillée à tous les stades de l'utilisation d'ACCESS. L'amélioration constante de l'aide en fait un partenaire de choix dans l'apprentissage permanent d'ACCESS. Personnellement, je ne peux m'en passer, ne serait-ce que pour mémoire.

II - Pré requis - Graphiques et textes

Pour réussir un bon splash-screen, à part le côté programmation, il faut choisir une belle police de caractères et un beau graphique de préférence en ayant un rapport avec le logiciel.
Vous pouvez vous inspirer de ceux des grands logiciels comme Adobe Photoshop, Paint Shop Pro ou Adobe Acrobat.

II-A - L'image

Pour l'image, prenez un bon logiciel de retouche photo, du type Adobe Photoshop Element, Paint Shop Pro ou The Gimp, ce dernier est gratuit et très performant.
Choisissez une police de caractères sur de nombreux sites existants. La plupart proposent des centaines de polices gratuites.

Donner du relief à votre image en appliquant un effet de style "bouton".

Sauvegardez votre image au format GIF ou JPG (JPEG) normalement vous pouvez avoir une belle image pour une quinzaine de kilo-octets. L'exemple ci-dessous est un gif de 10 kilo-octets.

Pas de reconversion possible pour moi dans l'infographie !

II-B - Le texte

Il ne faut pas oublier que le splash-screen ne reste pas indéfiniment affiché. Ne chargez pas trop en texte, et choisissez une taille suffisamment grande pour que l'utilisateur puisse le lire sans effort. Mettez les informations habituelles comme le nom de l'application, ceux des concepteurs et n'oubliez pas le logo du client et de votre société.

Ne mettez pas le numéro de version de l'application, sinon vous devrez faire des modifications de l'image à chaque nouvelle livraison.

III - Le formulaire

III-A - Mise au point visuelle

Ouvrez une base de données et créer un formulaire vierge. Insérez l'image en utilisant le contrôle Image et cadrez-la en haut à gauche.
Réglez les propriétés suivantes :

Propriétés

Valeur

Affichage autorisé

Formulaire

Barre défilement

Aucune

Afficher sélecteur

Non

Boutons de déplacements

Non

Diviseurs d'enregistrements

Non

Taille ajustée

Non

Auto centrer

Oui

Boîte contrôle

Non

Boutons MinMax

Aucun

Bouton Fermer

Non

Bouton Fermer

Non

Style bordure

Aucun

Mettez-vous en mode consultation et utilisez la souris pour régler les dimensions du formulaire. Une fois l'opération effectuée, repassez en mode création et modifiez la dernière propriété du formulaire.

Propriétés

Valeur

Fen modale

Oui

Pour éviter de voir le fond du formulaire, colorez-le en gris

Propriétés

Valeur

Couleur fond

8421504

et réduisez la taille du fond et du formulaire pour qu'il colle à l'image.

Le réglage des bords.

A ce stade, vous pouvez faire un essai. Pour cela, commencez par enregistrer le formulaire, le nom de frmSplashScreen semble tout indiqué, fermez-le puis rouvrez-le pour qu'il s'affiche au milieu de la fenêtre ACCESS. (propriété Auto Centrer = Oui)

Pas mal... non ?!

III-B - Le code

Une des fonctions les plus méconnues d'Access est certainement la minuterie. Celle-ci n'est présente que sur les objets formulaires.
Sa mise en oeuvre se fait à deux niveaux :

- La définition d'un intervalle de temps (exprimé en millisecondes)

- La procédure qui sera exécutée toutes les n millisecondes.

Propriétés

Valeur

Intervalle minuterie

1000

Sur minuterie

[Procédure événementielle]

La procédure événementielle vise à ouvrir le formulaire principal de l'application et à fermer le formulaire au bout de n millisecondes.

Le code de fermeture.

Private Sub Form_Timer()

Me.TimerInterval = 0                    ' arret de la minuterie
DoCmd.OpenForm "frmMenuPrincipal"       ' ouverture du forms de l'application
DoCmd.Close acForm, Me.Name               ' fermeture du splash

End Sub

TimeInterval correspond à la propriété Intervalle minuterie. Celle-ci doit être remise à zéro.

Si la minuterie n'est pas remise à zéro, cela peut entraîner une instabilité voire un blocage du système. Seul l'arrêt de la tâche MSACCESS.EXE dans le gestionnaire du même nom (ctrl+alt+del) peut débloquer la situation.

Dans un deuxième temps, on ouvre un formulaire, en principe c'est votre menu.
Puis on ferme le SplashScreen.

III-C - Afficher des informations supplémentaires

Dans un SplashScreen, outre les renseignements statiques, vous souhaiterez peut-être afficher des informations dynamiques comme un numéro de version ou bien le nom de l'utilisateur.
Pour cela nous devons créer une étiquette.

- Ouvrez le formulaire en mode création,

- Ajouter une étiquette où vous souhaitez voir figurer l'information,

- Écrivez "Version-User" à l'intérieur,

- Donner-lui une largeur suffisante.

- Allez dans le menu Format et choisissez Mettre au premier plan,

- Afficher les propriétés en changer le nom en lblVersion.

Cliquez sur le carré en haut à gauche pour sélectionner les propriétés du formulaire.

Carrée ! la zone...

Créez une procédure sur l'évènement Sur réception focus comme nous avons fais précédemment. Écrivez le code suivant dans la procédure.

Le code d'affichage

' on inscrit le N° de version et l'utilisateur Windows
me.lblVersion.caption = "V. 1.0 - " & Environ("USERNAME")

' ou bien

me.lblVersion.caption = "V. 1.0 - " & CurrentUser
' ici c'est l'utilisateur Access connecté.

III-D - Les réglages

Les réglages sont simples car ils ne concernent que le temps d'affichage. Pour les modifier il suffit de jouer sur la valeur de la propriété Intervalle minuterie.
La partie SplashScreen est terminée.

IV - Intégration du Splashscreen

L'intégration du SplashScreen peut se faire à plusieurs niveaux, puisqu'il existe plusieurs manières d'ouvrir un formulaire au démarrage.

IV-A - Par Macro

Vous pouvez lancer le formulaire par la macro de démarrage :

- Ouvrez une macro vierge

- Insérez l'action OuvrirFormulaire

- Dans Nom formulaire, indiquez le nom : frmSplashScreen

- Affichage : Formulaire

- Mode fenêtre : Standard

- Enregistrez la macro sous le nom : Autoexec

IV-B - Par l'option Formulaire de démarrage

Vous pouvez également utiliser les options de démarrage d'Access du menu Outils/Démarrer....

Des options très utiles.

IV-C - Par procédure VBA

Lorsque vous souhaitez effectuer d'autres tâches au démarrage de votre application, préférez plutôt la procédure VBA.
Pour cela, procédez comme pour un démarrage par Macro (Autoexec) mais indiquez l'action ExécuterCode à la place de OuvrirFormulaire.
Donnez le nom de la procédure ; dans notre cas, il s'agit de Startup.

Ouvrez un nouveau module et créez une procédure (Sub) que vous nommerez StartUp().

La procédure à exécuter au démarrage.

Sub Startup()

DoCmd.OpenForm "SplashScreen", acNormal           ' ouvrir le splashscreen
DoEvents                                          ' pour version 2002 et +
' execute les traitements divers
' ....

DoCmd.Close acForm, "SplashScreen", acSaveNo      ' ferme le splashscreen

End Sub

Il est évident que dans ce cas la fermeture est conditionnée par une procédure externe (DoCmd.Close acForm, "SplashScreen", acSaveNo).
Il est donc impératif que le splashscreen ne commande pas lui même sa fermeture. Pour cela, il suffit simplement de mettre la minuterie à 0.

V - Versions postérieures à Access 2000

Il a été constaté, à partir d'ACCESS 2002, que le splash-screen n'apparaît pas toujours. Ce problème se produit lorsque du code est exécuté après l'appel du formulaire splash-screen.
Après quelques tests, la solution à apporter est l'insertion d'un DoEvents immédiatement à la suite de l'affichage du SplashScreen.

1. Si vous avez choisi l'ouverture via les options de démarrage, insérez le DoEvents au début de votre procédure qui suit.

2. Si vous avez choisi l'ouverture via une procédure au démarrage placez le DoEvents après le Docmd.OpenForm "SplashScreen".

Le DoEvents à pour effet de terminer toutes les tâches avant de continuer l'exécution.

VI - Conseils

C'est ici que se termine ce tutoriel. Nous avons vu qu'un splashscreen n'est pas compliqué à réaliser, le plus difficile étant le choix et la réalisation d'un graphique. N'oubliez pas que si vous désirez que votre application s'affiche en plein écran, ne le faites pas tant que le splashscreen ne sera pas fermé.

VII - Remerciements

Je tiens à remercier : Cerbères pour le temps passé en relecture et correction.
Tequila pour avoir mis en lumière le problème constaté avec les versions ultérieures d'Access 2000.
Jean-Louis HUBICHE pour ses judicieuses remarques de dernière minutes.
ndlr : Apparement chez les HUBICHE on pratique ACCESS de père en fils... et c'est une bonne chose.
À l'équipe de Developpez.com pour la qualité du site.
À Nono40 pour son super éditeur XML qui se bonifie avec le temps comme un vieux Pommard.
Je présente mes plus plates excuses à ceux que j'aurais omis de remercier.