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

  1. Ouvrez la table concernée en mode Création.
  2. Placez-vous sur le champ.
  3. 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 de C.
  • Si vous souhaitez que les 20 caractères soient tous renseignés, remplacez les 20 C par 20 &. Vous pouvez aussi envisager des A ou des L, 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à.

  1. Vous avez construit un formulaire qui permet la saisie dans la table. Ouvrez ce formulaire en mode Création.
  2. Faites apparaître les propriétés du formulaire en double-cliquant sur le pavé à l’intersection des règles graduées.
  3. Activez l’onglet Evénement de la feuille de propriétés.
  4. Cliquez dans l’événement Avant MAJ, déroulez la liste associée, et sélectionnez Procédure événementielle.
  5. Cliquez ensuite sur les points de suspension à droite. Vous accédez à l’événement Visual Basic.
  6. Renseignez l’évenement de cette manière :

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() par Lower().

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 :

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 :

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 !

Vous aimerez aussi...

2 réponses

  1. Hervé Inisan dit :

    sacreptitlou > Merci pour le retour ! Et content que ça puisse dépanner !

  2. sacreptitlou dit :

    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!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *