Vérification d'un mot de passe lors d'une identification

Résolu
AntoineDr Messages postés 15 Statut Membre -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, Bonsoir

Dans la tentative de créer un logiciel d'enregistrement clients pour une bibliothèque, une des interfaces permet de s'enregistrer comme nouveau client. La vérification du mot de passe fonctionne lorsque

mdp.Text = verifmdp.Text

Seulement une InputBox s'affiche quand ils sont différents mais cela ne fonctionne pas, même si l'on rentre le bon mot de passe.

Je vous copie colle le codage effectué pour cette interface:
Private Sub Validerinscription_Click()

Dim i As Integer
i = 2

While Feuil2.Cells(i, 1) <> Empty
i = i + 1
Wend

Feuil2.Cells(i, 1) = i - 1
Feuil2.Cells(i, 2) = nom.Text
Feuil2.Cells(i, 3) = prenom.Text
Feuil2.Cells(i, 4) = mail.Text
Feuil2.Cells(i, 5) = mdp.Text



If mdp.Text <> verifmdp.Text Then

Do

InputBox ("Veuillez saisir un nouveau mot de passe")

Loop Until TextBox.Text = mdp.Text 'PROBLEME ICI

Else


nom.Text = ""
prenom.Text = ""
mail.Text = ""
mdp.Text = ""
verifmdp.Text = ""

Pageaccueil.Show

End If

End Sub


Merci de votre aide

EDIT : ajout des balises de code !

1 réponse

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Déjà...

    Merci de bien vouloir utiliser la coloration syntaxique (les balises de code) lorsque tu postes du code sur le forum.
    Explications disponibles ici :
    https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    Ensuite :
    à quoi te sert cette partie du code :
    While Feuil2.Cells(i, 1) <> Empty
    i = i + 1
    Wend
    

    A trouver la dernière ligne de ton tableau ?
    Si oui.. dans ce cas.. plutôt que de passer par une boucle tu peux faire :
    i = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
    


    Enfin...
    Tu écris
    TextBox.Text = mdp.Text 
    

    .... Tu es sûr que ta textbox.. se nomme TextBox ?? n'y aurait-il pas un chiffre derrière ?

    Au cas où... as tu regardé en mode pas à pas si tes variables sont bonnes ?
    0
    1. AntoineDr Messages postés 15 Statut Membre
       
      J'ai trouvé cette solution pour la vérification du mot de passe :

      While Feuil2.Cells(i, 1) <> Empty
      i = i + 1
      Wend
      
      
      If mdp.Text <> verifmdp.Text Then
      
      MsgBox("Veuillez saisir un nouveau mot de passe")
      
      Else


      Donc ce problème là est résolu. Par contre existe-t-il d'autres moyens avec des outils plus simple comme
      While
      Do loop until
      ...

      Pour chercher une valeur existante dans une feuille excel ?

      Je souhaite valider ou non l'identification d'une personne selon un numéro client à rechercher dans un annuaire.

      Merci
      0
    2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > AntoineDr Messages postés 15 Statut Membre
       
      J'ai trouvé cette solution pour la vérification du mot de passe :

      Ben.. ça ne fait rien à part incrémenter la variable I tant que la cellule n'est pas vide...
      ce qui , donc.. , semble correspondre à la recherche de la dernière ligne non vide d'une plage de cellule.. et donc .. aucun rapport avec l'éventuelle recherche d'un user Login/mot de pass.....


      Par contre existe-t-il d'autres moyens
      Pour chercher une valeur existante dans une feuille excel ?


      Oui.. il existe la méthode FIND
      Plus simple.... pas sûr .. plus efficace par contre !
      https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel


      PS: Pour l'utilisation des balises de code... c'est TOUT le code qu'il faut mettre ENTRE les balises.. pas juste une mot ou une instruction...

      Toi tu as écris ( par exemple ) :
      While
      Feuil2.Cells(i, 1) <> Empty
      i = i + 1
      Wend


      Alors que tu aurais du avoir :
      While Feuil2.Cells(i, 1) <> Empty
      i = i + 1
      Wend


      Nb2 : Si tu regardes le lien que je t'avais donné à ce sujet.. il montre également comment CHOISIR le LANGAGE correspondant.. ( ici..pour le VBA .. tu prendras BASIC )
      0
    3. AntoineDr Messages postés 15 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Mon problème de recherche du client dans la base de données est là

      Dim i As Integer
      
      n = 2    'j ai rajouté ça...
      While Feuil2.Cells(n, 1) <> Empty
      n = n + 1
      Wend
      
      
      For i = 2 To n 'On veut vérifier que le numéro client existe via feuil.2
      If TextBox1 <> Feuil2.Cells(i, 1) Then
      MsgBox ("Veuillez entrer un numéro correct")
      
      ElseIf TextBox2 <> Feuil2.Cells(i, 5) Then 'Trouver mdp qui correspond au n° client de la feuil.2
      MsgBox ("Veuillez entrer un mot de passe correct")
      
      Else
       
      
      End If
      
      Next
      0
    4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > AntoineDr Messages postés 15 Statut Membre
       
      Tu ne prend pas en compte les remarques que je te fais... à quoi bon continuer à t'aider .. hein ??

      Enfin bon essayons encore...

      Ce code là :
      n = 2    'j ai rajouté ça...
      While Feuil2.Cells(n, 1) <> Empty
      n = n + 1
      Wend
      


      Doit être remplacé par :
      n= Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
      


      et cette partie là :
      For i = 2 To n 'On veut vérifier que le numéro client existe via feuil.2
      If TextBox1 <> Feuil2.Cells(i, 1) Then
      MsgBox ("Veuillez entrer un numéro correct")
      
      ElseIf TextBox2 <> Feuil2.Cells(i, 5) Then 'Trouver mdp qui correspond au n° client de la feuil.2
      MsgBox ("Veuillez entrer un mot de passe correct")
      
      Else
       
      
      End If
      
      Next
      


      Par ... l'utilisation de la méthode FIND ! (voir le lien que je t'ai donné !!!
      Dim Trouve As Range, PlageDeRecherche As Range
      Dim Valeur_Cherchee As String, AdresseTrouvee As String
      
      '********* à adapter ***********
      'affectation de valeurs aux variables :
          'on cherche le mot  qui se trouve dans la TextBox1
      Valeur_Cherchee = TextBox1
          'dans la première colonne de la feuille active
      Set PlageDeRecherche = Feuil2.Columns(1)
      '*******************************
      'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
      Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
      
      'traitement de l'erreur possible : Si on ne trouve rien :
      If Trouve Is Nothing Then
          'ici, traitement pour le cas où la valeur n'est pas trouvée
          MsgBox ("Veuillez entrer un numéro correct")
      Else
          'ici, traitement pour le cas où la valeur est trouvée
         If TextBox2 <> Feuil2.Cells(Trouve.row, 5) Then 'Trouver mdp qui correspond au n° client de la feuil.2
           MsgBox ("Veuillez entrer un mot de passe correct")
         End if
      End If
      'vidage des variables
      Set PlageDeRecherche = Nothing
      Set Trouve = Nothing
      
      0
    5. AntoineDr Messages postés 15 Statut Membre > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Je tente d'adapter ça alors, merci !!
      0