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

Résolu
pe59189 Messages postés 20 Statut Membre -  
pe59189 Messages postés 20 Statut Membre -
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

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

      Je souhaite savoir comment coder.

      Cdlt,
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > pe59189 Messages postés 20 Statut Membre
         
        0
  2. 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
    1. 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
    2. fabien25000 Messages postés 697 Statut Membre 59
       
      Bonjour dany,
      ce code permet donc d'éviter que le mot de passe soit craqué ou supprimé?
      0
    3. dany > fabien25000 Messages postés 697 Statut Membre
       
       
      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
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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
    5. fabien25000 Messages postés 697 Statut Membre 59 > yg_be Messages postés 23437 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
  3. 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
    1. pe59189 Messages postés 20 Statut Membre
       
      Bonjour,

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

      Cordialement
      0