Menu

Contrôle de la validité du mot de passe sous VBA MS ACCESS [Résolu]

pe59189 8 Messages postés samedi 26 août 2017Date d'inscription 27 avril 2018 Dernière intervention - 31 août 2017 à 16:49 - Dernière réponse : pe59189 8 Messages postés samedi 26 août 2017Date d'inscription 27 avril 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

14 réponses

yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - Modifié par yg_be le 31/08/2017 à 23:34
0
Utile
bonsoir, je pense que c'est réalisable. as-tu une question?
pe59189 8 Messages postés samedi 26 août 2017Date d'inscription 27 avril 2018 Dernière intervention - 1 sept. 2017 à 07:07
Bonjour,

Je souhaite savoir comment coder.

Cdlt,
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > pe59189 8 Messages postés samedi 26 août 2017Date d'inscription 27 avril 2018 Dernière intervention - 1 sept. 2017 à 09:15
Commenter la réponse de yg_be
0
Utile
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
 
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > 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é.
fabien25000 265 Messages postés mercredi 5 octobre 2016Date d'inscription 16 octobre 2017 Dernière intervention > yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 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?
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > fabien25000 265 Messages postés mercredi 5 octobre 2016Date d'inscription 16 octobre 2017 Dernière intervention - 2 sept. 2017 à 11:13
je suppose que ta question concerne la gestion du mot de passe par le serveur, pas par le client.
je pense que ces techniques permettent de réduire le risque d'écrasement, de suppression ou de crakage:
- ne jamais enregistrer le mot de passe tel quel, plutôt enregistrer le résultat du hachage du mot de passe
- enregistrer ce résultat haché à un endroit peu accessible
- encrypter le transfert du mot de passe entre le client et le serveur
fabien25000 265 Messages postés mercredi 5 octobre 2016Date d'inscription 16 octobre 2017 Dernière intervention > yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention - 2 sept. 2017 à 14:46
en fait non, je parlais des mots de passe qui sont censés protéger la ou les feuilles, la structure du classeur ou le code VBA, j'avais entendu dire que ces derniers étaient faciles à contourner, je m'y suis interressé et c'est même plus que simple (30 secondes grand max pour déprotéger une feuille) donc je continue mes recherches...
peut être devrais-je ouvrir un nouveau sujet pour ne pas trop polluer celui de pe59189?
yg_be 5595 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 mai 2018 Dernière intervention > fabien25000 265 Messages postés mercredi 5 octobre 2016Date d'inscription 16 octobre 2017 Dernière intervention - 2 sept. 2017 à 15:50
c'est en effet un autre sujet, plutôt dans le forum Excel.
Commenter la réponse de dany
0
Utile
Bonjour pe59189,

Je te laisse lire ces 2 messages :

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

http://www.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
 
pe59189 8 Messages postés samedi 26 août 2017Date d'inscription 27 avril 2018 Dernière intervention - 4 sept. 2017 à 17:17
Bonjour,

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

Cordialement
Commenter la réponse de dany