Frequently asked questions - Base
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
Comment formater un champ : majuscules / minuscules ?
On souhaite par exemple que la saisie d'un champ Nom se fasse en tout en majuscules et que pour un champ Prénom seule la première lettre en soit en majuscule.
Nous pourrons recourir à deux solutions différentes : utilisation d'un champ masqué ou d'une macro.
Quelle que soit la solution choisie, il pourra être intéressant de définir dans la table les champs concernés au format Texte [VARCHAR_IGNORECASE]. Les recherches ou sélection par requêtes seront facilitées car l'utilisateur pourra saisir les critères de recherche indifféremment en majuscules ou minuscules.
Utilisation d'un champ masqué
Dans le formulaire de saisie on utilisera des contrôles Champ masqué. Ces contrôles sont des zones de saisie, comme les zones de texte, qui disposent entre autres de deux propriétés particulières :
Masque de saisie | On y insère autant de codes de caractères que de caractères pouvant être saisis : un code = un caractère.[1]
Les codes déterminent ce que l'utilisateur peut saisir à cette position. |
Vérification de format | Oui : seuls les caractères autorisés sont acceptés.
Non : les caractères interdits sont supprimés en quittant le champ |
Pour convertir automatiquement un champ Nom en majuscules utiliser le code X :
- Tout caractère permis (on ne peut limiter aux lettres car il faut pouvoir saisir des tirets ou des apostrophes)
- Conversion automatique des minuscules en majuscules
- Indiquer autant de X que la longueur du champ
- Vérification de format : Oui
Pour ne capitaliser que la première lettre d'un champ Prénom, utiliser un code A suivi de x :
- Avec A les caractères A-Z peuvent être saisis (en principe pas de tiret ni d'apostrophe en début de nom) ; si une minuscule est saisie, elle est automatiquement convertie en majuscule.
- Avec x tout caractère permis.
Utilisation d'une macro
Il est possible d'associer une macro à l'événement Avant l'actualisation des contrôles Zones de texte. Cet événement se produit avant que le contenu du contrôle modifié par l'utilisateur ne soit écrit dans la source de données.
Il nous est donc possible de modifier systématiquement ce qui a été saisi pour faire la conversion minuscules / majuscules.
Ci-dessous le texte de deux procédures "PysCapTout" & "PysCapUn" qui seront associées respectivement aux zones de texte "Nom" et "Prénom".
Les procédures "reçoivent" en paramètre le contenu du contrôle concerné. Elles modifient le texte contenu dans la zone de texte.
- PysCapTout transforme tout en majuscules.
- PysCapUn ne transforme que le premier caractère en majuscule.
option explicit
sub PysCapitaliseOne(PysEvent)
PysEvent.Source.text = Ucase(left(PysEvent.Source.text, 1)) & Lcase(mid(PysEvent.Source.text, 2))
end sub
sub PysCapitaliseAll(PysEvent)
PysEvent.Source.text = Ucase(PysEvent.Source.text)
end sub
Notes
- ↑ https://help.libreoffice.org/latest/fr/text/shared/02/01170101.html Tableau des codes disponibles