Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :N'autoriser que la saisie de chiffres
Lors de l'
astuce précédente, grâce aux
expressions régulières, nous avons vu comment contrôler et valider la saisie d'une zone de texte exclusivement remplie de
lettres de l'alphabet. Dans ce nouveau volet, toujours grâce aux
expressions régulières, nous allons voir comment n'autoriser la saisie que de
chiffres, pour la création d'un
identifiant par exemple.
Sur l'exemple illustré par la capture, dans une deuxième zone de saisie, l'utilisateur doit inscrire un
identifiant composé de
6 chiffres, ni plus ni moins. S'il coopère, son inscription est acceptée, en atteste le message qui s'affiche en regard de la zone. S'il saisit plus ou moins de 6 chiffres ou qu'il intègre d'autres caractères comme des lettres de l'alphabet, son identifiant est automatiquement refusé.
Base de données Access à télécharger
Pour la mise en place de cette nouvelle
astuce, nous suggérons d'opérer à partir de la
base de données du volet précédent, offrant ce
formulaire de saisie.
La première zone de texte n'autorise l'insertion que de lettres. Si vous respectez cet accord, à validation, c'est un message de confirmation qui apparaît. Le cas échéant, c'est un message de refus. Dans la deuxième zone de saisie, c'est un
identifiant numérique composé strictement de
6 chiffres qui est attendu. Mais pour l'instant, aucun contrôle n'est encore en vigueur sur cette zone. C'est l'enjeu de ce nouveau volet.
La fonction de contrôle
Comme nous l'avons fait à l'occasion du volet précédent, nous proposons de créer une
fonction de vérification dans un
module indépendant. Nous l'exploiterons ensuite sur le
formulaire pour
scruter en temps réel la
saisie dans la deuxième zone de texte.
- Dans le volet de navigation sur la gauche, double cliquer sur l'élément Module1,
Nous basculons ainsi dans l'
éditeur VBA Access et nous y découvrons la
fonction que nous avions construite pour vérifier que la saisie était exclusivement composée de lettres de l'alphabet. Elle instancie la
classe des expressions régulières (Set expReg = CreateObject("VBScript.RegExp")) pour construire un modèle de séquence remarquable à respecter (expReg.Pattern = "^[a-z A-Z]+$").
Comme la
fonction que nous devons construire est similaire, nous proposons de la dupliquer pour adapter la séquence de contrôle sans oublier de changer le nom de la fonction copiée.
- Sélectionner et copier (CTRL + C) l'intégralité de la fonction,
- La coller juste en-dessous (CTRL + V),
- Puis, changer son nom pour estChiffres, y compris dans les affectations,
Public Function estChiffres(saisie As Variant) As String
Dim expReg As Object
If IsNull(saisie) = False Then
Set expReg = CreateObject("VBScript.RegExp")
expReg.Pattern = "^[a-z A-Z]+$"
If (expReg.Test(saisie)) Then
estChiffres = "Saisie acceptée."
Else
estChiffres = "* Saisie refusée. Seules les lettres sont acceptées."
End If
Else
estChiffres = ""
End If
Set expReg = Nothing
End Function
Contrôler la saisie des chiffres
Bien sûr, cette fonction dupliquée et adaptée n'est pas encore fonctionnelle. Nous devons travailler la séquence remarquable qui permettra de juger si la saisie de la zone à scruter est bien composée
exclusivement de chiffres et nécessairement codés sur
6 caractères. En effet, le contenu de la zone de texte à vérifier est passé en paramètre de la fonction (estChiffres(saisie As Variant)). Il concernera la deuxième zone du formulaire, lorsque nous lui appliquerons cette fonction de contrôle.
- Modifier la séquence de la propriété Pattern comme suit :
expReg.Pattern = "^([0-9]){6}$"
Entre crochets, nous indiquons que seule la saisie d'un chiffre compris entre 0 et 9 est autorisée. Grâce au chiffre 6 entre accolades, nous imposons que cette séquence soit vérifiée sur 6 caractères strictement. Avec le symbole du $, nous spécifions que la saisie doit ainsi se terminer et avec l'accent circonflexe en préfixe, qu'elle doit ainsi débuter. En d'autres termes, nous refusons l'inscription de tout autre caractère et imposons la suite de 6 chiffres.
- Adapter maintenant le message de refus comme suit :
estChiffres = "* Saisie refusée. Seul un identifiant de 6 chiffres est autorisé."
Contrôler la saisie numérique
Il est désormais question d'exploiter cette fonction sur le formulaire pour valider l'inscription de l'identifiant. Et pour cela, nous allons l'utiliser comme source de données d'une zone de texte placée juste sur la droite.
- Enregistrer les modifications (CTRL + S) apportées au code VBA,
- Revenir sur le formulaire (ALT + Tab) toujours en exécution,
- A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans les propositions, choisir le mode Création,
- Sur le formulaire en conception, cliquer sur la zone de texte à droite de celle de l'identifiant,
- Activer alors l'onglet Données de sa feuille de propriétés,
- Puis, cliquer dans la zone de sa propriété Source contrôle pour l'activer,
C'est elle qui doit héberger la syntaxe exploitant la
fonction estChiffres pour contrôler la saisie de l'identifiant.
- Cliquer sur le petit bouton à droite de la propriété Source contrôle,
- Dans le générateur d'expression qui se présente, saisir la syntaxe suivante :
=estChiffres([identifiant])
La zone à contrôler est effectivement nommée identifiant. Et comme il s'agit d'un contrôle, nous l'encadrons de crochets.
Maintenant que son contenu est passé en paramètre de la fonction que nous venons de construire, nous devrions assister à la vérification instantanée de la saisie sur le formulaire.
- Cliquer sur le bouton Ok du générateur pour valider l'expression,
- De retour sur le formulaire, l'enregistrer (CTRL + S),
- Puis, l'exécuter avec la touche F5 du clavier par exemple,
Dès lors, dans la deuxième zone de saisie, lorsque vous tapez un identifiant de 6 chiffres, la saisie est acceptée. Mais s'il est composé de plus ou de moins de 6 chiffres ou encore qu'il accueille des lettres de l'alphabet, elle est refusée.