Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Mot de passe alphanumérique
Dans les deux précédents volets, nous avons construit des
fonctions VBA Access pour tester qu'une saisie était exclusivement composée de
lettres de l'alphabet et qu'une autre, nécessairement codée sur 6 caractères, n'était faite que de
chiffres. Dans ce nouveau volet, nous allons voir comment contrôler un
mot de passe alphanumérique, avec des contraintes supplémentaires.
Dans l'exemple illustré par la capture, le
mot de passe tapé dans la troisième zone de texte, n'est autorisé que sous certaines conditions. Il doit être codé sur 5 caractères, ni plus ni moins. Il doit présenter au moins
une lettre en majuscule, au moins une autre en
minuscule et au moins un
chiffre.
Base de données Access à télécharger
Pour la découverte de cette nouvelle
astuce, nous proposons d'agir à partir de la
base de données des travaux précédents, hébergeant ces trois zones de saisie à contrôler.
- Télécharger le fichier compressé tester-alphanumerique.rar en cliquant sur ce lien,
- Le décompresser dans le dossier de votre choix,
- Double cliquer sur le fichier résultant pour l'ouvrir dans Access,
- Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
- Dans le volet de navigation sur la gauche, double cliquer sur le formulaire F_Inscription,
Nous l'affichons ainsi en mode exécution. Les deux premières zones de texte attendent donc respectivement la saisie d'une information exclusivement textuelle et d'une donnée totalement numérique sur 6 chiffres. La troisième doit recevoir le
mot de passe alphanumérique sur
5 caractères. Mais il n'est pas encore contrôlé puisque nous devons bâtir la fonction dédiée dans ce nouveau volet.
La fonction de contrôle
Comme pour les deux volets précédents, nous proposons de bâtir une
fonction VBA publique hébergée par un
module indépendant. Elle pourra ainsi être utilisée sur n'importe quel formulaire de l'application Access pour opérer ses contrôles.
- Dans le volet de navigation, double cliquer sur l'élément Module1,
Nous basculons ainsi dans l'
éditeur VBA Access et nous retrouvons les
deux fonctions que nous avions bâties pour contrôler respectivement la
saisie exclusive de lettres et la
saisie seulement de chiffres sur un nombre précis de caractères.
Comme la
fonction que nous devons bâtir doit suivre le même protocole, en instanciant la classe des expressions régulières, nous proposons de dupliquer l'une des deux existantes. Ensuite, nous l'adapterons.
- Sélectionner tout le code de la fonction estChiffres,
- Le copier (CTRL + C) et le coller (CTRL + V) en-dessous,
- Puis, changer son nom à chaque fois qu'il est utilisé, comme suit :
Public Function estAlphaNum(saisie As Variant) As String
Dim expReg As Object
If IsNull(saisie) = False Then
Set expReg = CreateObject("VBScript.RegExp")
expReg.Pattern = "^([0-9]){6}$"
If (expReg.Test(saisie)) Then
estAlphaNum = "Saisie acceptée."
Else
estAlphaNum = "* Saisie refusée. Seul un identifiant de 6 chiffres est autorisé."
End If
Else
estAlphaNum = ""
End If
Set expReg = Nothing
End Function
La séquence alphanumérique
Maintenant, nous devons construire la
séquence de l'expression régulière capable de vérifier que la saisie de l'utilisateur est bien
alphanumérique, soit composée de
lettres et de chiffres. C'est donc la valeur de la
propriété Pattern de l'
objet expReg que nous devons adapter. La séquence classique d'une
expression régulière pour autoriser une
saisie alphanumérique est de la forme suivante :
"^([A-Za-z0-9]){5}$"
Elle indique que toute lettre de l'alphabet est autorisée, en majuscule comme en minuscule (A-Za-z). Mais elle indique aussi que tout chiffre de 0 à 9 (0-9) est autorisé et tout cela, nécessairement sur 5 caractères ({5}). Cependant, autoriser ne veut pas dire imposer. En conséquence, les suites de lettres comme
abcde ou de chiffres comme
12345 passeraient. Or, nous souhaitons imposer la saisie d'au moins une lettre en minuscule, d'une autre en majuscule et d'au moins un chiffre, le tout sur 5 caractères. Donc, nous avons besoin d'une
expression régulière quelque peu plus complexe.
- Remplacer la séquence de la propriété Pattern par la suivante :
expReg.Pattern = "^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9]).{5}$"
C'est une forme particulière certes et voici ce qu'il faut retenir. Nous imposons la saisie d'une ou de plusieurs (?=.*?)
lettres en majuscules ([A-Z]). Nous imposons de même la saisie d'une ou de plusieurs (?=.*?)
lettres en minuscules ([a-z]). Enfin, nous imposons aussi l'inscription d'un ou de plusieurs (?=.*?)
chiffres ([0-9]). Et cette inscription doit comporter
5 caractères précisément, tout en respectant ces règles énoncées. Avant de tester, nous devons encore adapter le message de refus.
- Modifier l'indication d'échec, comme suit :
If (expReg.Test(saisie)) Then
estAlphaNum = "Saisie acceptée."
Else
estAlphaNum = "* Sur 5 caractères, au moins 1 chiffre et 1 lettre et 1 majuscule."
End If
Else
estAlphaNum = ""
Vérifier la saisie alphanumérique
Désormais, nous devons enclencher la
fonction estAlphaNum dans la
propriété Source contrôle d'une zone de texte du formulaire, pour vérifier en temps réel la saisie du
mot de passe alphanumérique.
- Enregistrer les modifications (CTRL + S) et revenir sur le formulaire en exécution (ALT + Tab),
- 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 du mot de passe,
- Activer alors l'onglet Données de sa feuille de propriétés,
- Puis cliquer dans la zone vide de sa propriété Source contrôle,
- Dès lors, cliquer sur le petit bouton placé à droite de la propriété Source contrôle,
Nous affichons ainsi le
générateur d'expression.
- Dans la zone de saisie du générateur, taper la formule suivante :
=estAlphaNum([motPasse])
En paramètre de notre
fonction estAlphaNum nous passons donc le contenu de la
zone de saisie du mot de passe qui est reconnue sous le nom
motPasse.
- 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 (F5),
- Puis, entrer et valider un mot de passe alphanumérique dans la troisième zone de texte,
Désormais, si votre mot de passe ne fait pas précisément
5 caractères avec au moins une
majuscule et une
minuscule ainsi qu'un
chiffre, il est refusé. En revanche, dès lors qu'il respecte toutes les règles imposées par la séquence de l'expression régulière, il est accepté.