Demander le mot de passe plusieurs fois

  • Initiateur de la discussion Initiateur de la discussion Madjon6
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Madjon6

XLDnaute Occasionnel
Bonjour à tous,

J'ai un classeur qui est accessible via un user et un mot de passe.

Mon problème est que quand l'utilisateur se trompe de mot de passe ou de user, le classeur se ferme tout en informant que le user ou mot de passe est invalide sans proposer de le ressaisir une 2eme ou une 3 eme fois.

Voici le code VBA à changer s'il vous plaît pour éviter que le fichier se ferme et qu'il propose une seconde voire une 3eme fois de ressaisir le mdp.

Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Exit For
End If
End If
Next i

If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If



Merci pour votre aide
 
Re : Demander le mot de passe plusieurs fois

Bonjour Madjon6,

Pour 3 tentatives :

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, [COLOR="Red"]n As Byte[/COLOR], métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
1 MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Exit For
[COLOR="Red"]Else
If n < 2 Then MsgBox IIf(n = 1, "Dernier", "Encore un") & " essai...": n = n + 1: GoTo 1[/COLOR]
End If
End If
Next i

If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If

End sub

A+
 
Dernière édition:
Re : Demander le mot de passe plusieurs fois

Bonjour Madjon6, Job75,

Une autre possibilité:

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, métier As String, User As String, Nb As Integer
Dim ws As Worksheet
Tablo = Sheets("Admin").Range("A2").CurrentRegion
User = InputBox("Votre code utilisateur", "Identifiant")
For i = 1 To UBound(Tablo)
    If Tablo(i, 2) = User Then
        Do
        MDP = InputBox("Mot de passe", "Saisie mot de passe " & User & " (" & IIf(Nb > 0, Nb + 1 & "ème", "1er") & " essai)")
            If Tablo(i, 3) = MDP Then
            OK = True
            métier = Tablo(i, 1)
            Else
            Nb = Nb + 1
            End If
        Loop Until OK = True Or Nb = 3
Exit For
    End If
Next i
If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If

End Sub

@+

Gael
 
Re : Demander le mot de passe plusieurs fois

Bonjour Gael , Job75,

Gael, ca marche pour le mot de passe mais pas pour le User (l'identifiant). Si l'utilisateur se trompe au niveau de son user, le classeur se ferme comme avant.

Merci encore
 
Re : Demander le mot de passe plusieurs fois

Re,

Moi non plus Madjon6, je ne pensais pas à l'identifiant. Voyez donc :

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, n As Byte, métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
1 User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Exit For
End If
End If
Next i

[COLOR="Red"]If n < 2 Then MsgBox IIf(n = 1, "Dernier", "Encore un") & " essai...": n = n + 1: GoTo 1[/COLOR]

If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If

End sub

A+
 
Re : Demander le mot de passe plusieurs fois

Merci Job75,

Ca marche mais gros souci puisque même l'utilisateur ne se trompe pas, l'outil lui demande quand même de saisir 3 fois son mdp et user.

Juste cette anomalie à corriger avt que ca fonctionne grace à vous.

Merci encore
 
Re : Demander le mot de passe plusieurs fois

bonjour le fil,

à tester :

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, n As Byte, métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
1 User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Exit For
End If
End If
Next i

[COLOR="Red"]if OK Then Exit Sub[/COLOR]

If n < 2 Then MsgBox IIf(n = 1, "Dernier", "Encore un") & " essai...": n = n + 1: GoTo 1

If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If

End sub

a+
 
Re : Demander le mot de passe plusieurs fois

Re,

Ouh là là, quand on ne teste pas...

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, n As Byte, métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
1 User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Exit For
End If
End If
Next i

If Not OK Then
[COLOR="Red"]If n < 2 Then MsgBox IIf(n = 1, "Dernier", "Encore un") & " essai...": n = n + 1: GoTo 1[/COLOR]
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If

End sub

Edit : merci mromain, c'est pareil

A+
 
Re : Demander le mot de passe plusieurs fois

Merci Mromain, jOB 75

La derniere de job75 avec le then marche mais le souci c'est que quand l'utilisateur se trompe au niveau du mdp l'outil lui redemande de resaisir aussi son user or il faudrait que l'outil demande uniquement le MDP quand l'utilisateur s'est trompé sur le mdp et non pas redemander les 2 (user + id)

Merci mille fois et dsl pr le dérangement
@++
 
Dernière édition:
Re : Demander le mot de passe plusieurs fois

Re,

Exigeant Madjon6... Testez ça :

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As String
Dim OK As Boolean, n As Byte, p As Byte, métier As String, User As String
Dim ws As Worksheet

Tablo = Sheets("Admin").Range("A2").CurrentRegion
1 User = InputBox("Votre code utilisateur", "Identifiant")

For i = 1 To UBound(Tablo)
If Tablo(i, 2) = User Then
2 MDP = InputBox("Mot de passe", "Saisie mot de passe user = " & User)
If Tablo(i, 3) = MDP Then
OK = True
métier = Tablo(i, 1)
Else
If n < 2 Then MsgBox IIf(n = 1, "Dernier", "Encore un") & " essai...": n = n + 1: GoTo 2
End If
GoTo 3
End If
Next

If p < 2 Then MsgBox IIf(p = 1, "Dernier", "Encore un") & " essai...": p = p + 1: GoTo 1

3 If Not OK Then
MsgBox IIf(n, "Mot de passe", "User") & " invalide"
ActiveWorkbook.Close savechanges:=False
End If

End sub

A+
 
Dernière édition:
Re : Demander le mot de passe plusieurs fois

Non pas exigeant c'est juste que le classeur est consulté par des responsables et comme ces monsieurs n'aiment pas perdre leur temps alors on s'adapte.


En tout cas le classeur est maintenant un vrai outil.

Merci encore pour votre aide

A très bientôt
 
Re : Demander le mot de passe plusieurs fois

Re,

Un essai avec la gestion de la fonction annuler qui permet:

de quitter la procédure si on fait annuler lors de la saisie du user
de revenir sur User si on fait annuler lors de la saisie du mot de passe

le code utilisateur a également 3 essais afin de sortir de la procédure si l'on appuie sur OK 3 fois sans saisir de code.

Code:
Private Sub Workbook_Open()
Dim Tablo As Variant, i As Integer, MDP As Variant
Dim OK As Boolean, métier As String, User As Variant, Nb As Integer
Dim ws As Worksheet
Tablo = Sheets("Admin").Range("A2").CurrentRegion
Debut:
    Do
    User = Application.InputBox("Votre code utilisateur", "Identifiant")
    Nb = Nb + 1
    Loop Until User <> vbNullString Or Nb = 3
If VarType(User) = vbString And User <> vbNullString Then
Nb = 0
For i = 1 To UBound(Tablo)
    If Tablo(i, 2) = User Then
        Do
        MDP = Application.InputBox("Mot de passe", "Saisie mot de passe " & User & " (" & IIf(Nb > 0, Nb + 1 & "ème", "1er") & " essai)")
        If VarType(MDP) = vbBoolean Then GoTo Debut
            If Tablo(i, 3) = MDP Then
            OK = True
            métier = Tablo(i, 1)
            Else
            Nb = Nb + 1
            End If
        Loop Until OK = True Or Nb = 3
Exit For
    End If
Next i
End If
If Not OK Then
MsgBox ("User ou mot de passe invalide")
ActiveWorkbook.Close savechanges:=False
End If
 
End Sub

@+

Gael
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
223
Réponses
5
Affichages
237
Réponses
2
Affichages
201
Réponses
5
Affichages
232
Retour