J'ai un problème avec une macro et je ne parviens pas au résultat recherché. (Voir mon code plus bas)
Dans une feuille Excel 2010, lorsque je sélectionne les touches Ctrl+Shift+C, un message invite l'utilisateur à entrer un mot de passe. Lorsque j'entre le bon mot de passe, la feuille se déverrouille, les colonnes M, N et O s'affichent et la cellule M7 est sélectionnée. Jusqu'ici tout fonctionne bien.
Lorsque l'utilisateur entre un mot de passe incorrect, un message s'affiche mentionnant : "Mot de passe invalide". L'utilisateur clique sur Ok et un message l'invite à entrer le mot de passe.
Jusqu'ici tout fonctionne bien.
Par contre, si l'utilisateur entre une deuxième fois un mot de passe incorrect, j'obtiens le message suivant : Erreur d'exécution 1004, Mot de passe invalide etc..
J'aimerais qu'au deuxième mot de passe invalide, le macro sorte du code (Exit Sub).
Pouvez-vous m'aider s.v.p. à régler ce problème?
Code:
Sub Afficher_2()
'
' Afficher_2 Macro
'
' Touche de raccourci du clavier: Ctrl+Shift+C
On Error GoTo fin1
ici:
If ActiveSheet.Unprotect = False Then Exit Sub
Columns("L:P").Select
Selection.EntireColumn.Hidden = False
Range("P7").Select
Range("M7").Select
fin1: If Err.Number > 0 Then MsgBox "Mot de passe invalide": GoTo ici
End Sub
Sub Afficher_2()
Dim quota As Long
' Touche de raccourci du clavier: Ctrl+Shift+C
On Error Resume Next
debut:
quota = quota + 1
If quota > 2 Then MsgBox "Trop de fois Bye bye!", vbExclamation, "Annulation": Exit Sub
ActiveSheet.Unprotect
Columns("L:P").EntireColumn.Hidden = False
Range("M7").Select
If Err = 0 Then
quota = ""
Else
MsgBox "Mot de passe invalide"
GoTo debut
End If
End Sub
Il me semble qu'il manque l'InputBox dans vos codes non ? Je verrais les choses comme ça :
Code:
Sub Afficher()
' Touche de raccourci du clavier: Ctrl+Shift+C
Dim nb As Byte
Dim mp As String
debut:
mp = InputBox("Entrez le mot de passe.", "MOT DE PASSE")
If mp = "" Then Exit Sub
nb = nb + 1
If mp <> "toto" Then (à adapter à ton cas)
If nb > 2 Then
MsgBox "Vous n'avez droit qu'à trois essais !", vbExclamation, "Annulation"
'ThisWorkbook.Close SaveChanges:=False (à accepter ou pas)
Exit Sub
End If
MsgBox "Mot de passe invalide"
GoTo debut
Else
ActiveSheet.Unprotect
Columns("L:P").EntireColumn.Hidden = False
Range("M7").Select
End If
End Sub
Bonjour Robert et à Sète,
L'inputbox est inutile, le fait de mettre Activesheet.unprotect Excel le demande automatiquement
avec la boite de dialogue habituelle.
J'ai eu le même réflexe que toi.
Bruno
Merci pour vos commentaires. Le tout fonctionne bien. Il me reste un problème à poster concernant un bouton de contrôle formulaire vulnérable lorsque la feuille est protégée.