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

Résolu/Fermé
pe59189 Messages postés 19 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 13 février 2021 - 31 août 2017 à 16:49
pe59189 Messages postés 19 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 13 février 2021 - 4 sept. 2017 à 17:17
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.

3 réponses

yg_be Messages postés 21059 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 janvier 2023 1 307
Modifié le 31 août 2017 à 23:34
bonsoir, je pense que c'est réalisable. as-tu une question?
0
pe59189 Messages postés 19 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 13 février 2021
1 sept. 2017 à 07:07
Bonjour,

Je souhaite savoir comment coder.

Cdlt,
0
yg_be Messages postés 21059 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 janvier 2023 1 307 > pe59189 Messages postés 19 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 13 février 2021
1 sept. 2017 à 09:15
0
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
 
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59
2 sept. 2017 à 10:13
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022
Modifié le 2 sept. 2017 à 10:37
 
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 21059 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 janvier 2023 1 307 > dany
2 sept. 2017 à 10:39
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 mercredi 5 octobre 2016 Statut Membre Dernière intervention 28 juillet 2022 59 > yg_be Messages postés 21059 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 janvier 2023
2 sept. 2017 à 11:04
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
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 19 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 13 février 2021
4 sept. 2017 à 17:17
Bonjour,

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

Cordialement
0