Code VBA pour connexion utilisateur bug
Bonjour à tous
Dans mon projet de gestion d'adhérents, une demande de mot de passe avant lancement du logiciel est demandé.
Je débute en vba et celà fait 2 jours que je suis sur cette partie de code.
Seulement voila.. quand je le test, celà fonctionne pour le premier utilisateur et quand je le test pour le deuxième utilisateur... il me dit que les identifiants ne sont pas bon, alors que le code est le même pour le premier utilisateur..??????
idem pour l'administrateur..il ne le reconnait pas..pourtant j'utilise le même début de code que pour les utilisateurs.
Logiquement il y a une partie du code pour limiter les tentatives à 3 essais...sauf que cest en illimité...je ne vois plus pourquoi
Pour la partie "journal de connexion" tout fonctionne bien quand il valide la connexion.
le fichier est trop volumineux pour le mettre en piece jointe....
Je vous joint lle code pour ceux qui aurait envie de se tirer les cheveux comme moi depuis 2 jours....
Private Sub cmdvalider_Click()
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("Login").Select
'déclaration des variables
Dim AddData As Range, Current As Range
Dim user As Variant, Code As Variant
Dim PName As Variant, AName As Variant
Dim ws As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet
Dim result As Integer
Dim TitleStr As String
Dim msg As VbMsgBoxResult
Dim Trial As Long
'affectation des varaibles
user = Me.txtutilisateur.Value
Code = Me.txtcode.Value
TitleStr = "Resaisir mot de passe"
result = 0
Set Current = Sheets("Login").Range("O2")
'Error handler
On Error GoTo errHandler:
'Destination d'enregistrement des connexions
Set AddData = Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
'*****************************************
'test de connexion pour les admnistrateurs
'*****************************************
If user <> "" And Code <> "" Then
For Each AName In Range("M3:M5")
'mot de passe avec chiffre et lettre possible
If AName = Code And AName.Offset(0, -1) = user Then
MsgBox "Merci de vous êtes connecté " & user
'enregistrement de l'administrateur
AddData.Value = user
AddData.Offset(0, 1).Value = Now
'ajout de l'utilisateur actuelle dans la feuille Login
Current.Value = user
'Validation de la connexion si condition remplie
result = 1
'fermeture formulaire connexion
'********************************************
'Affiche toute les feuilles visible ainsi que la barre
'*****************************************************
Call VisibleFeuille
ActiveWindow.DisplayWorkbookTabs = True
Application.ScreenUpdating = True
Sheets("Acceuil").Activate
Unload Me
Exit Sub
End If
Next AName
End If
'*****************************************
'test de connexion pour les utilisateurs
'*****************************************
If user <> "" And Code <> "" Then
For Each PName In Sheets("Login").Range("E3:E20")
If PName = Code And PName.Offset(0, -1) = user Then
MsgBox "Merci de vous êtes connecté " & user
'record user login
AddData.Value = user
AddData.Offset(0, 1).Value = Now
'Add usernmae to the worksheet
Current.Value = user
'affichage des feuilles et cache de la barre
Call VisibleFeuille
ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
Application.ScreenUpdating = True
' A TRAITER PLUS TARD
'cache des feuilles pour utilisateur
'If PName.Offset(0, 1) <> "" Then
'Set ws = Worksheets(PName.Offset(0, 1).Value)
'ws.Visible = True
'End If
'validation connexion si condition remplie
result = 1
'fermeture du formulaire
Unload Me
Sheets("Acceuil").Activate
Exit Sub
End If
Next PName
End If
'**************************
'test des 3 tentatives
'**************************
If result = 0 Then
'incrémentation de la variable erreur
Trial = Trial + 1
'moins de 3 eereurs message
If Trial < 3 Then msg = MsgBox("Identifiants non reconnus. Veuillez resaisir vos identifiants", vbExclamation + vbOKOnly, TitleStr)
Me.txtutilisateur.SetFocus
End If
'Dernière chance et fermeture du classeur
If Trial = 3 Then
msg = MsgBox("Essais maximum atteind. Veuillez contacter votre administrateur", vbCritical + vbOKOnly, TitleStr)
ActiveWorkbook.Quit = False
End If
Exit Sub
'Error block
errHandler:
MsgBox "Une erreure est survenue " & vbCrLf & "Numéro d'erreur: " _
& Err.Number & vbCrLf & Err.Description & vbCrLf & _
"Merci de contacter votre administrateur"
End With
End Submerci pour les conseils que vous pourrez m'apporter
je vous joint la feuille excel qui sert d'appuie au code si celà peut vous aider