Contrôle de la validité du mot de passe sous VBA MS ACCESS

Résolu
pe59189 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
pe59189 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais écrire un fonction sous VBA MS Access pour vérifier la validité d'un mot de passe.

Les conditions sont les suivantes :

- 8 caractères au minimum
- au moins une lettre MAJUSCULE
- au moins une lettre minuscule
- au moins un chiffre
- au moins un les caractère spécial

Cordialement.
A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, je pense que c'est réalisable. as-tu une question?
0
pe59189 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Je souhaite savoir comment coder.

Cdlt,
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > pe59189 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
0
dany
 
Bonjour pe59189,

Je te propose ce code VBA :


Option Explicit

Function VérifPW(pw As String) As Boolean
  Const CSP As String * 14 = "#!&%$£µ§()[]{}"
  Dim c1 As String * 1, c2 As Byte
  Dim f1 As Byte, f2 As Byte, f3 As Byte, f4 As Byte
  Dim lng As Byte, i As Byte: lng = Len(pw)
  If lng < 8 Then Exit Function
  For i = 1 To lng
    c1 = Mid$(pw, i, 1): c2 = Asc(c1)
    Select Case c2
      Case 65 To 90: f1 = 1    ' majuscule 'A' à 'Z'
      Case 97 To 122: f2 = 1   ' minuscule 'a' à 'z'
      Case 48 To 57: f3 = 1    ' chiffre '0' à '9'
      Case Else:               ' caractère spécial
        If InStr(CSP, c1) > 0 Then f4 = 1
    End Select
  Next i
  If f1 + f2 + f3 + f4 = 4 Then VérifPW = True
End Function

Sub Essai()
  If Not VérifPW("aBc#e0gh") Then Exit Sub
  MsgBox "Password : ok => faire la suite"
End Sub


⚠  Tu dois adapter CSP : liste des caractères spéciaux ;
il faut aussi ajuster le « * 14 » selon le nombre de caractères
de CSP ; exemple : si tu ajoute 3 autres caractères spéciaux,
mets les dans la chaîne CSP et : * 17

Merci de me dire si ça te convient.

Cordialement
 
0
dany
 
 
Remarque : si tu veux ajouter un test des lettres accentuées (majuscules ou
minuscules accentuées telles que À ÉÈÊË ... Ç Ñ et à éèêë ... ç ñ), tu peux le
faire avec la même méthode que j'ai utilisé pour CSP ; donc une constante
qui les contient toutes : Const LtrACC As String * 14 = "ÀÉÈÊËÇÑàéèêëçñ"
(exemple limité à compléter et * 14 à ajuster) ; puis test selon c1 (et pas
selon c2) : If InStr(LtrACC, c1) > 0 Then f5 = 1 => ajout de Dim f5 As Byte
et cette ligne : If f1 + f2 + f3 + f4 + f5 = 5 Then VérifPW = True
 
0
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   59
 
Bonjour dany,
ce code permet donc d'éviter que le mot de passe soit craqué ou supprimé?
0
dany > fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention  
 
 
Bonjour Fabien,

Non, ce n'est pas ça : c'est selon le début du sujet de la discussion :
« Contrôle de la validité du mot de passe » ; tester la validité d'un
mot de passe => le programme demande à l'utilisateur de saisir
son mot de passe, puis juste après appui sur Entrée ou clic sur
bouton OK, le programme vérifie s'il contient au moins une lettre
majuscule, au moins une lettre minuscule, au moins un chiffre,
et au moins un caractère spécial + cet ajout éventuel : au moins
une lettre accentuée (en majuscule ou minuscule).

Ci-dessus, je parle d'une saisie d'un mot de passe lors de sa
création initiale ainsi que lors de la confirmation du mot de
passe, et aussi plus tard lors de la modification éventuelle
du précédent mot de passe ; ne pas oublier que l'utilisateur
doit d'abord entrer le bon mot de passe pour pouvoir alors
le modifier ; il ne s'agit en aucun cas d'éviter qu'un mot de
passe soit craqué ou supprimé : test de validité seulement.

@pe59189 : clique sur ce lien pour voir mon code VBA :

https://forums.commentcamarche.net/forum/affich-34835166-controle-de-la-validite-du-mot-de-passe-sous-vba-ms-access#4

Cordialement
 
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > dany
 
bonjour, je dirais que ceci vérifie, au moment de "créer" un mot de passe, qu'il est conforme à quelques règles. le but de ces règles est de rendre le mot de passe complexe, difficile à deviner.
il s'agit donc plutôt d'un test de conformité (de la complexité du mot) qu'un test de validité.
0
fabien25000 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   59 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je comprend merci à vous 2 pour vos éclaircissements.
Sans vous embêter à l'écrire un code permettant d'éviter l'écrasement, la suppression ou le crakage d'un mdp est possible?
0
dany
 
Bonjour pe59189,

Je te laisse lire ces 2 messages :

https://forums.commentcamarche.net/forum/affich-34835166-controle-de-la-validite-du-mot-de-passe-sous-vba-ms-access#4

https://forums.commentcamarche.net/forum/affich-34835166-controle-de-la-validite-du-mot-de-passe-sous-vba-ms-access#5

Tu peux aussi séparer le dernier test en 2 :

- au moins une lettre majuscule accentuée
- au moins une lettre minuscule accentuée

Si tu veux plus d'aide, merci d'indiquer la liste complète des
caractères spéciaux que tu utilises ; idem pour les lettres
accentuées.

N'oublie pas de me donner ton avis.

Cordialement
 
0
pe59189 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Grand merci pour ton aide.
Les 2 codes proposés règlent mon problème.

Cordialement
0