Bonjour,
Le problème de la saisie d'une date dans un formulaire étant régulièrement posé je vous propose de le résoudre avec un module de classe autorisant plusieurs formats de saisie tout en intégrant des règles de validation et de mise en forme conditionnelle.
Les avantages de cette approche pour le développeur sont la souplesse et la facilité d'utilisation puisqu'il manipule non plus une valeur de type String mais directement une valeur de type Date. Pour l'utilisateur final le masque de saisie, l'infobulle et la mise en forme conditionnelle lui permettent d'identifier facilement ce qu'on attend de lui.
- Style européen(Jour Mois Année), anglais(Mois Jour Année) ou américain(Année Mois Jour)
- Affichage de l'année sur deux ou quatre chiffres
- Libre choix du séparateur parmi /-.,' et espace
- Les règles de validation:
- Un intervalle de date programmable
- Valider la saisie des jours fériés
- Valider les jours de la semaine
- La couleur du texte et du fond peuvent être personnalisés selon l'état de la saisie.
- Deux évènements permettent une interaction avec l'utilisateur final:
- Lorsque la valeur change
- Lorsque l'etat change
- L'infobulle du TextBox affiche le format attendu.
- Accepte le collage de valeur de type Date.
- Des fonctions intégrées permettent d'obtenir des informations supplémentaires tel que le numéro de semaine(norme ISO) ou le jour julien.
- Pas d'evènements Enter ou Exit.
- L'amplitude de l'intervalle est fixée à cent ans afin de permettre un affichage de l'année sur deux chiffres.
- L'année de base de l'intervalle est déterminée au moment de l'initialisation. Si elle n'est pas précisée elle est égale à l'année en cours - 70 arrondi a la dizaine inférieure (Soit actuellement 2008-70=1938, 1938->1930).
- Seuls les jours fériés en France sont pris en compte, pour les autres pays une petite adaptation serait donc nécessaire.
- Excel 2000 et postérieur
- Testé avec Excel Xp et Excel 2003
Le code étant un peu long pour être directement publié, je vous laisse un petit fichier de démonstration. Vos commentaires et suggestions sont les bienvenues.
Cordialement,
Tirex28/
[EDIT] Fichier mis a jour suite à une suggestion de Wilfried42 concernant la gestion du BackSpace.
[EDIT] Fichier mis a jour pour corriger un bug mineur.
Partager