formateur informatique

Fonction VBA Access pour valider un identifiant numérique

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Fonction VBA Access pour valider un identifiant numérique
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
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.

Fonction VBA Access pour contrôler la saisie d-un identifiant numérique

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,
Fonction VBA Access en source de contrôle de la zone de texte du formulaire

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,
Contrôler la saisie d-un identifiant numérique avec une fonction VBA sur un formulaire Access

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.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn