Danigra

Danigra

XLDnaute Nouveau
Salut à toutes et à tous,
Je viens de réaliser un Code VBA pour changement de mot de passe.
Il y a erreur au niveau de Nom d'utilisateur (ça manque d'expression).
Le voici :

Private Sub Valider_Click()Dim test As IntegerIf IsNull(Me.Tx_USER_NV_MDP) ThenMsgBox "Le Champ Nom d'utilisateur est obligatoire", vbInformation, "NOM D'UTILISATEUR VIDE"Me.Tx_USER_NV_MDP.SetFocusElseIf IsNull(Me.Tx_ANC_MDP) ThenMsgBox "Le Champ Ancien Mot de Passe est obligatoire", vbInformation, "MOT DE PASSE VIDE"Me.Tx_ANC_MDP.SetFocusElseIf IsNull(Me.Tx_NV_MDP) ThenMsgBox "Nouveau Mot de Passe obligatoire pour effecuer le changement", vbInformation, "NOUVEAU MOT DE PASSE EST VIDE"Me.Tx_NV_MDP.SetFocusElseIf IsNull(Me.Tx_CONF_MDP) ThenMsgBox "Il faut saisir la confirmation du nouveau Mot de Passe", vbInformation, "ERREUR SUR LA SAISIE DE LA CONFIRMATION DU NOUVEAU MOT DE PASSE"Me.Tx_CONF_MDP.SetFocusElseIf Me.Tx_NV_MDP / Me.Tx_CONF_MDP ThenMsgBox "Le Mot de Passe n'est pas conforme dans les deux champs", vbInformation, "ERREUR SUR LE MOT DE PASSE"ElseIf (IsNull(DLookup("NOM D'UTILISATEUR", "CONNEXION", "NOM D'UTILISATEUR='" & Me.Tx_USER_NV_MDP & "'"))) Or _ (IsNull(DLookup("mot_passe", "CONNEXION", "mot_passe = '" & Me.Tx_ANC_MDP & "'"))) Then MsgBox "Combinaison NOM D'UTILISATEUR/MOT DE PASSE incorrecte", vbCritical, "erreur NOM D'UTILISATEUR/MOT DE PASSE" Else DoCmd.SetWarnings False DoCmd.RunSQL "update CONNEXION SET CONNEXION.MOT_PASSE = TX_NV_MDP WHERE (((CONNEXION.NOM D'UTILISATEUR) = TX_USER_NV_MDP AND CONNEXION.MOT_PASSE = TX_ANC_MDP))" DoCmd.SetWarnings True DoCmd.Requery MsgBox " LE CHANGEMENT DU MOT DE PASSE EST EFFECUE" End If End If End Sub
 

Pièces jointes

  • Erreur changement Mot de passe_095930.JPG
    Erreur changement Mot de passe_095930.JPG
    122.4 KB · Affichages: 9

Volvo64400

XLDnaute Nouveau
Bonjour,
A essayer

Code:
Private Sub Valider_Click()
    If Len(Me.Tx_USER_NV_MDP) = 0 Then
        MsgBox "Le Champ Nom d'utilisateur est obligatoire", vbInformation, "NOM D'UTILISATEUR VIDE"
        Me.Tx_USER_NV_MDP.SetFocus
    ElseIf Len(Me.Tx_ANC_MDP) = 0 Then
        MsgBox "Le Champ Ancien Mot de Passe est obligatoire", vbInformation, "MOT DE PASSE VIDE"
        Me.Tx_ANC_MDP.SetFocus
    ElseIf Len(Me.Tx_NV_MDP) = 0 Then
        MsgBox "Nouveau Mot de Passe obligatoire pour effectuer le changement", vbInformation, "NOUVEAU MOT DE PASSE EST VIDE"
        Me.Tx_NV_MDP.SetFocus
    ElseIf Len(Me.Tx_CONF_MDP) = 0 Then
        MsgBox "Il faut saisir la confirmation du nouveau Mot de Passe", vbInformation, "ERREUR SUR LA SAISIE DE LA CONFIRMATION DU NOUVEAU MOT DE PASSE"
        Me.Tx_CONF_MDP.SetFocus
    ElseIf Me.Tx_NV_MDP <> Me.Tx_CONF_MDP Then
        MsgBox "Le Mot de Passe n'est pas conforme dans les deux champs", vbInformation, "ERREUR SUR LE MOT DE PASSE"
    Else
        If IsNull(DLookup("NOM_D_UTILISATEUR", "CONNEXION", "NOM_D_UTILISATEUR='" & Me.Tx_USER_NV_MDP & "'")) Or _
           IsNull(DLookup("mot_passe", "CONNEXION", "mot_passe = '" & Me.Tx_ANC_MDP & "'")) Then
            MsgBox "Combinaison NOM D'UTILISATEUR/MOT DE PASSE incorrecte", vbCritical, "erreur NOM D'UTILISATEUR/MOT DE PASSE"
        Else
            DoCmd.SetWarnings False
            DoCmd.RunSQL "UPDATE CONNEXION SET CONNEXION.MOT_PASSE = '" & Me.Tx_NV_MDP & "' WHERE (((CONNEXION.[NOM D'UTILISATEUR]) = '" & Me.Tx_USER_NV_MDP & "') AND (CONNEXION.[MOT_PASSE] = '" & Me.Tx_ANC_MDP & "'))"
            DoCmd.SetWarnings True
            DoCmd.Requery
            MsgBox "LE CHANGEMENT DU MOT DE PASSE EST EFFECTUE"
        End If
    End If
End Sub
 
Dernière modification par un modérateur:

Volvo64400

XLDnaute Nouveau
L'erreur d'exécution 2471 dans Access indique généralement qu'il y a un problème avec la référence à un objet ou à une propriété. Dans votre cas, il semble que l'erreur soit liée à la façon dont vous référencez le champ "NOM_D_UTILISATEUR" dans la fonction DLookup.

Assurez-vous que le nom du champ "NOM_D_UTILISATEUR" est correctement orthographié dans votre table "CONNEXION". De plus, vérifiez que le formulaire dans lequel vous utilisez ce code VBA est lié à la table appropriée.

Si le nom du champ est correct et que le formulaire est lié à la bonne table, essayez de déboguer votre code en affichant les valeurs des variables utilisées dans la fonction DLookup pour voir si elles contiennent ce que vous attendez.

Voici un exemple de débogage pour afficher la valeur de Me.Tx_USER_NV_MDP juste avant l'appel à la fonction DLookup :

Debug.Print "Valeur de Me.Tx_USER_NV_MDP : " & Me.Tx_USER_NV_MDP

Ajoutez cette ligne juste avant la ligne contenant l'appel à DLookup. Cela vous permettra de voir dans la fenêtre "Immediate" (accessible via Ctrl + G dans l'éditeur VBA) si Me.Tx_USER_NV_MDP contient bien la valeur attendue.

Assurez-vous également que le formulaire est ouvert lorsque vous exécutez ce code, car les contrôles de formulaire ne sont accessibles que lorsque le formulaire est ouvert.
 

Volvo64400

XLDnaute Nouveau
Code:
Private Sub Valider_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
   
    ' Vérifier si les champs sont vides
    If Nz(Me.OldPassword, "") = "" Or Nz(Me.NewPassword, "") = "" Or Nz(Me.ConfirmPassword, "") = "" Then
        MsgBox "Veuillez remplir tous les champs.", vbExclamation, "Changement de mot de passe"
        Exit Sub
    End If
   
    ' Vérifier si le nouveau mot de passe correspond à la confirmation
    If Me.NewPassword <> Me.ConfirmPassword Then
        MsgBox "Le nouveau mot de passe et la confirmation ne correspondent pas.", vbExclamation, "Changement de mot de passe"
        Exit Sub
    End If
   
    ' Vérifier si l'ancien mot de passe est correct
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM Utilisateurs WHERE NomUtilisateur = '" & Me.NomUtilisateur & "' AND MotDePasse = '" & Me.OldPassword & "'")
   
    If rs.EOF Then
        MsgBox "L'ancien mot de passe est incorrect.", vbExclamation, "Changement de mot de passe"
    Else
        ' Mettre à jour le mot de passe dans la table
        strSQL = "UPDATE Utilisateurs SET MotDePasse = '" & Me.NewPassword & "' WHERE NomUtilisateur = '" & Me.NomUtilisateur & "'"
        db.Execute strSQL
        MsgBox "Le mot de passe a été changé avec succès.", vbInformation, "Changement de mot de passe"
       
        ' Effacer les champs
        Me.OldPassword = ""
        Me.NewPassword = ""
        Me.ConfirmPassword = ""
    End If
   
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub
 
Dernière modification par un modérateur:

Danigra

XLDnaute Nouveau
Salut Volvo,
J'ai suivi vos conseils, j'ai résolu le problème, mais il y en a un autre qui se pose.
Enfin, il y a la confirmation du nouveau mot de passe, et dans la table Connexion, il y a le changement effectif, mais le Formulaire Compte d'utilisateur ne reconnaît pas le nouveau mot de passe, seulement l'ancien mot de passe qui se trouve dans la macro Connexion.
Alors que dans le Formulaire Changement de Mot de Passe, le Mot de Passe reconnu est le nouveau Mot de Passe.
Explication svp.
Je vous ai joint un fichier PDF.
 

Pièces jointes

  • CHANGEMENT DE MOT DE PASSE_121432.pdf
    114.4 KB · Affichages: 2

Volvo64400

XLDnaute Nouveau
Il semble que le problème réside dans la façon dont le formulaire de Compte d'utilisateur récupère et affiche les données de la table Connexion après le changement de mot de passe. Voici quelques suggestions pour résoudre ce problème :

  1. Rafraîchir le formulaire après le changement de mot de passe : Après avoir effectué la mise à jour du mot de passe dans la table Connexion, vous pouvez ajouter une instruction pour rafraîchir le formulaire de Compte d'utilisateur afin qu'il affiche les données mises à jour. Vous pouvez utiliser la méthode Requery ou Refresh du formulaire pour cela.

Me.Requery


  1. Vérifier les propriétés de liaison des contrôles : Assurez-vous que les contrôles du formulaire de Compte d'utilisateur sont correctement liés aux champs de la table Connexion qui contiennent les informations sur le nom d'utilisateur et le mot de passe. Si les liens sont incorrects, le formulaire pourrait afficher les anciennes valeurs plutôt que les nouvelles.
  2. Vérifier les propriétés de filtrage du formulaire : Si votre formulaire utilise un filtre pour afficher les données d'un utilisateur spécifique, assurez-vous que ce filtre est mis à jour après le changement de mot de passe pour inclure le nouvel enregistrement correspondant à l'utilisateur.
  3. Vérifier les événements du formulaire : Si vous avez des événements VBA associés au chargement du formulaire ou à d'autres actions, assurez-vous qu'ils ne causent pas de conflits avec l'affichage des données mises à jour.
En examinant ces points, vous devriez être en mesure de résoudre le problème et de vous assurer que le formulaire de Compte d'utilisateur affiche correctement les nouveaux mots de passe après leur changement.
 

Discussions similaires

  • Résolu(e)
XL 2019 VBA
Réponses
18
Affichages
644

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 708
Messages
2 112 096
Membres
111 416
dernier inscrit
philipperoy83