Forcer une saisie en majuscules
Dans une table, j’ai un champ de type Texte, et de taille 20 caractères (par exemple). Comment faire en sorte que toute saisie dans ce champ soit convertie en majuscules ?
Vous avez plusieurs méthodes pour ça : intervenir au niveau de la table, en définissant un masque de saisie, ou intervenir au niveau du formulaire, par programmation VBA.
Majuscules par masque de saisie
- Ouvrez la table concernée en mode Création.
- Placez-vous sur le champ.
- Dans les propriétés du champ, tapez le masque de saisie suivant :
>CCCCCCCCCCCCCCCCCCCC;0;_
Un masque de saisie est composé de 3 parties, séparés par 2 point-virgules :
- La règle à appliquer au champ, codifiée par un certain nombre de signes (cliquez dans le masque de saisie et appuyez sur la touche
F1
pour obtenir de l’aide sur tous les signes autorisés). - Un chiffre 0 ou 1 qui indique si les caractères non codifiés doivent être stockés dans le champ ou non. En général, 0 est un bon choix.
- Le symbole qui servira de guide de saisie.
Parmi les signes utilisables dans la partie 1 du masque :
- Le signe
>
indique que tout ce qui suit doit être converti en majuscules. - Le signe
C
représente n’importe quel caractère, dont la saisie est facultative. Si votre champ a une taille de 20 caractères, vous placez donc autant deC
. - Si vous souhaitez que les 20 caractères soient tous renseignés, remplacez les 20
C
par 20&
. Vous pouvez aussi envisager desA
ou desL
, selon les besoins.
Majuscules par programmation VBA
Peut-être un peu plus technique, mais également plus évolutif comme méthode (par exemple, il n’est pas utile de se préoccuper du nombre de caractères du champ, même s’il est modifié plus tard). Le principe consiste à « intercepter » le champ avant qu’il ne soit stocké dans la table, et à le convertir à ce moment-là.
- Vous avez construit un formulaire qui permet la saisie dans la table. Ouvrez ce formulaire en mode Création.
- Faites apparaître les propriétés du formulaire en double-cliquant sur le pavé à l’intersection des règles graduées.
- Activez l’onglet Evénement de la feuille de propriétés.
- Cliquez dans l’événement
Avant MAJ
, déroulez la liste associée, et sélectionnezProcédure événementielle
. - Cliquez ensuite sur les points de suspension à droite. Vous accédez à l’événement Visual Basic.
- Renseignez l’évenement de cette manière :
1 |
Me![Nom du champ] = Upper(Me![Nom du champ]) |
En VB, la fonction VBA Upper()
convertit une chaîne de texte en majuscules. On prend donc la chaîne saisie, on la convertit, et on la réaffecte au champ.
Et pour obtenir des minuscules ?
C’est le même principe :
- Dans le masque de saisie, vous remplacez
>
par<
. - En VB, vous remplacez
Upper()
parLower()
.
Et pour obtenir des initiales ?
Hé, vous devenez exigeants, là :o)
Pour obtenir des initiales :
- Utilisez un masque de saisie comme celui-ci :
>C<CCCCCCCCCCCCCCCCCCC;0;_
(première lettre en majuscules, toutes les autres en minuscules) - En VB, écrivez :
1 |
Me![Nom du champ] = Upper(Left(Me![Nom du champ], 1)) & Mid(Me![Nom du champ], 2) |
Seule la première lettre du champ est transformée en majuscules. Si le champ contient hervé INIsan
, on obtient donc Hervé inisan
.
Et pour obtenir une initiale à chaque mot ?
On touche les limites du masque de saisie, car les mots peuvent être de taille variable. En VB, par contre, vous pouvez utiliser la fonction StrConv()
. Ca donne :
1 |
Me![Nom du champ] = StrConv(Me![Nom du champ], vbProperCase) |
Ici, hervé INIsan
devient Hervé Inisan
. Par contre, jEAn-miCHel
devient Jean-michel
(le tiret n’est pas vu comme un séparateur de mots). On peut programmer sa propre fonction de conversion, ça fera l’objet d’un autre article sur le blog !
sacreptitlou > Merci pour le retour ! Et content que ça puisse dépanner !
Merci beaucoup!
Moi qui suis plus que débutante, j’ai réussi à enregistrer mes noms propres en majuscule et mes prénoms avec des initiales dans ma table via un formulaire!
Merci encore et peut être à bientôt!