Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/12/2010, 21h33   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Par défaut Probléme compteur ne décrémente pas.

Bonjour a tous, j'ai un probléme avec mon code vba, il en décrémente pas.
Je pense que c'est juste une ligne qui fais bugger le code mais j'ai beau me casser la tête, je ne trouve pas.
Si quelqu'un pourrait me l'indiquer.
C'est donc un code VBA servant d'authentification. Et qui lorsqu'il y' a 3 essais raté, envoi sur un formulaire permettant la récupération du mot de passe.
Merci d'avance.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Commande5_Click()
 
Dim Db As Database
Dim Rs As Recordset
Dim compteur As Integer
Dim ok As Boolean
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Administration")
compteur = 3
 
Do While Not Rs.EOF
    If Rs.Fields("Login").Value = Login.Value Then
        If Rs.Fields("MotDePasse") = MotDePasse.Value Then
            Call MsgBox("Redirection", vbOKOnly, "Authentification")
            DoCmd.OpenForm ("MenuAdmin")
            GoTo Fin:
        Else
            compteur = compteur - 1
            Call MsgBox("Login ou mot de passe incorrect. Il vous reste " & compteur & " essais.", vbOKOnly + vbExclamation, "Erreur authentification")
            If compteur = 0 Then
                Call MsgBox("Vous avez dépassé le nombre d'essais autorisé.", vbOKOnly + vbExclamation, "Erreur")
                DoCmd.OpenForm ("Récupération")
                Me.Commande5.Visible = False
            End If
            GoTo Fin:
        End If
    End If
Loop
Fin:
End Sub
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2010, 01h39   #2
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut Matt014 et bienvenu,

plusieurs erreurs conceptuelles:
> compteur est initialisé à 3 à chaque appel de la fonction
> rs.eof risque pas d'être atteint puisque que tu reste toujours sur le même enregistrement.
> si ton login est le 4ème enregistrement tu auras le formulaire de récupération...

cf: DLookup()

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2010, 10h28   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Bonjour et merci pour la réponse.

Où placer le compteur alors?
Je débute en VBA, et j'ai récupéré un code de ce type et il y avais le rs.eof mais j'ai vu qu'il ne servait pas. Je ne sais pas s'il est necessaire de le laisser.
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2010, 17h51   #4
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
je te propose:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim compteur As Integer
 
Private Sub Commande5_Click()
If IsNull(DLookup("login", "administration", "login='" & login & "' and motdepasse='" & motdepasse & "'")) Then
    'pas trouvé
    compteur = compteur - 1
    ...
    Else
    'identifié
    ...
    DoCmd.OpenForm ("MenuAdmin")
End If
End Sub
 
Private Sub login_Change()
compteur=3
End Sub
> variable 'compteur' déclaré au niveau du formulaire et initialisé à chaque changement du login. (mais cela dépend de ton contexte)
> emploi de dlookup() pour vérifier l'identification (ce qui évite de boucler).

remarque: on pourrait aussi faire :
Code :
if DLookup("motdepasse", "administration", "login='" & login & "'")=motdepasse then
si login est indexé sans doublon.

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 11h53   #5
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
J'essaye ça et je te dis
Merci
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 12h59   #6
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Malheuresement ça ne marche pas.
Le compteur affiche -1 lors d'une erreur..
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 14h24   #7
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
salut,

quel est le code sur lequel tu arrives actuellement stp ?
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2011, 15h57   #8
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Bonjour a tous, et bonne année.

Et bien j'ai essayé ce code,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim compteur As Integer
 
Private Sub Commande5_Click()
If IsNull(DLookup("login", "administration", "login='" & login & "' and motdepasse='" & motdepasse & "'")) Then
            compteur = compteur - 1
            Call MsgBox("Login ou mot de passe incorrect. Il vous reste " &  
                            compteur & " essais.", vbOKOnly + vbExclamation, 
                            "Erreur authentification")
            If compteur = 0 Then
                Call MsgBox("Vous avez dépassé le nombre d'essais autorisé.",
                                vbOKOnly + vbExclamation, "Erreur")
                DoCmd.OpenForm ("Récupération")
            End If
 
    Else
            Call MsgBox("Redirection", vbOKOnly, "Authentification")
            DoCmd.OpenForm ("MenuAdmin")
 
    End If
End Sub
 
Private Sub login_Change()
compteur=3
End Sub
Et egalement celui-ci

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub Commande5_Click()
 
Dim Db As Database
Dim Rs As Recordset
Dim ok As Boolean
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Administration")
 
Do While Not Rs.EOF
    If Rs.Fields("Login").Value = Login.Value Then
        If Rs.Fields("MotDePasse") = MotDePasse.Value Then
            Call MsgBox("Redirection", vbOKOnly, "Authentification")
            DoCmd.OpenForm ("MenuAdmin")
            GoTo Fin:
        Else
            compteur = compteur - 1
            Call MsgBox("Login ou mot de passe incorrect. Il vous reste " & compteur & " essais.", vbOKOnly + vbExclamation, "Erreur authentification")
            If compteur = 0 Then
                Call MsgBox("Vous avez dépassé le nombre d'essais autorisé.", vbOKOnly + vbExclamation, "Erreur")
                DoCmd.OpenForm ("Récupération")
                Me.Commande5.Visible = False
            End If
            GoTo Fin:
        End If
    End If
Loop
Fin:
End Sub
 
 
Private Sub login_Change()
compteur=3
End Sub
Faut t'il déclarer login_change() dans la private sub de la commande 5 ?
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 17h59   #9
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Pas d'idée?
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 18h12   #10
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
Hello,
essaie de mettre un point d'arret dans ton venement change de Login, j'ai l'impression que ton code n'y passe jamais.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 18h20   #11
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 255
Points : 5 255
Bonjour à tous,

En plus de la remarque de jpcheck

Il me semble qu'il faut initialiser le compteur sur ouverture du formulaire d'authentification
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 22h23   #12
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Bonsoir a tous,

Qu'est ce que vous entendez par "mettre un point d'arrêt" ?

J'ai essayer de le mettre sur l'ouverture.. Rien ne change.
Merci.
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 16h43   #13
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 255
Points : 5 255
Salut,

peux-tu reposter le code complet que tu utilises maintenant pour ton formulaire ?

(ça ne mange pas de pain )
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 22h16   #14
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Voilà, j'en ai discuté avec ma prof ce matin, elle ma conseillé de le déclaré a part comme j'ai déjà fait mais rien ne change..

Au passage je suis en dut informatique et je dois rendre ça lundi ^^

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Option Compare Database
Private Sub Form_Open(Cancel As Integer)
Dim compteur As Integer
compteur = 3
End Sub
 
Private Sub Commande5_Click()
 
Dim Db As Database
Dim Rs As Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Administration")
 
Do While Not Rs.EOF
    If Rs.Fields("Login").Value = Login.Value Then
        If Rs.Fields("MotDePasse") = MotDePasse.Value Then
            Call MsgBox("Redirection", vbOKOnly, "Authentification")
            DoCmd.OpenForm ("MenuAdmin")
            DoCmd.Close acForm, ("Administration")
 
            GoTo Fin:
        Else
            compteur = compteur - 1
            Call MsgBox("Login ou mot de passe incorrect. Il vous reste " & compteur & " essais.", vbOKOnly + vbExclamation, "Erreur authentification")
            If compteur = 0 Then
                Call MsgBox("Vous avez dépassé le nombre d'essais autorisé.", vbOKOnly + vbExclamation, "Erreur")
                DoCmd.OpenForm ("Récupération")
                DoCmd.Close acForm, ("Administration")
            End If
            GoTo Fin:
        End If
    End If
Loop
Fin:
End Sub
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 22h20   #15
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 255
Points : 5 255
ReSalut,

Déjà il te faut remonter la déclaration du compteur dans la partie déclarative du module :

Code :
1
2
3
4
5
6
7
8
9
Option Compare Database
 
Dim compteur As Integer
 
Private Sub Form_Open(Cancel As Integer)
compteur = 3
End Sub
 
...
Ceci permet à la variable compteur d'être visible dans toutes les procédures du module (si tu ne fais pas ca compteur est égale à 0)

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 22h26   #16
Invité de passage
 
Inscription : décembre 2010
Messages : 24
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 24
Points : 4
Points : 4
Merci User tout fonctionne parfaitement maintenant

Une bonne soirée a vous.
Matt014 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h36.


 
 
 
 
Partenaires

Hébergement Web