Macro VBA - Erreur suite Déprotection via code VBA macro

Bonjour à tous,

Je rencontre un souci avec mon VBA invitant un utilisateur à entrer le mot de passe pour déprotéger un document.

L'idée est la suivante, je souhaiterais autoriser un utilisateur à déverrouiller un document et afficher des onglets (Feuilles) cachées.
Le souci consiste au faite que si l'utilisateur entre un mauvais mot de passe, il est considérer comme une erreur dans le code et il est proposé à l'utilisateur le débogage.

Je souhaiterais prévoir les cas possibles :

  1. L'utilisateur entre le bon mot de passe et la procédure continue
  2. Tous les autres cas, mauvais mot de passe, clic sur annuler ou croix, fin de la procédure.

Voici le code :

Sub Macro6()

    Sheets("Verrou").Protect Password:="1234"       'Verrouille la page avec le mdp "1234"
    Sheets("Verrou").Unprotect                      'Invite l'utilisateur à entrer le mdp

If (Sheets("Verrou").Unprotect = Faux) Then
    Exit Sub
End If
    MsgBox ("Mot de passe bon!!")

End Sub

Dans le cas présent la macro fait les étapes suivantes :

1. Verrouille la feuille "Verrou" avec le mdp "1234"
2. Invite l'utilisateur à déverrouiller

Si le mdp est bon affiche la box avec le message "Mot de passe bon!

Ce que je voudrais éviter c'est l'invitation au débogage et le code erreur en cas de mauvais mdp ET éventuellement mettre une MsgBox ("Mauvais mdp!")

Merci de votre aide.

Bonjour Sebgi, bonjour le forum,

Essaie comme ça :

Sub Macro6()
Sheets("Verrou").Protect Password:="1234"       'Verrouille la page avec le mdp "1234"
On Error Resume Next
Sheets("Verrou").Unprotect                      'Invite l'utilisateur à entrer le mdp
If Err <> 0 Then
    Err.Clear
    Exit Sub
End If
On Error GoTo 0
If Sheets("Verrou").Unprotect = False Then
    Exit Sub
End If
MsgBox ("Mot de passe bon!!")
End Sub

Merci bcp, ça fonctionne, maintenant je vais essayer de comprendre le raisonnement!!

Merci pour votre aide.

Re,

C'est plus une gestion d'erreur qu'un raisonnement... Pour éviter le débogage il faut passer par là.

On Error Resume Next débute la gestion des erreurs. Dès qu'un erreur se produit au lieu de s'arrêter et d'afficher le bug, le code passe à la ligne suivante. Mais il vaut mieux gérer cette erreur, en l'occurrence là je la vide et je sort de la procédure, que te continuer en l'ignorant...
On Error GoTo 0
permet d'annuler la gestion des erreur.

Re bonjour à tous,

Tout d'abord merci pour votre aide!!
Pour ceux que ça pourrait intéresser, je vous indique la solution finale apportée à mon problème.

Sub Verrouiller_Déverrouiller()

Dim Statut As String
Statut = Sheets("Graph").ProtectContents              

If Statut = True Then
        On Error Resume Next
        mdp = Sheets("Graph").Unprotect

        If (mdp) = "" Then
                MsgBox ("Mauvais mot de passe")
            ElseIf (mdp) = True Then
                'MsgBox ("Mot de passe bon!!")
                Sheets("Analyse").Visible = True
                Sheets("Power Q").Visible = True
            Else
                MsgBox ("Vous avez annulé")
        End If
        Sheets("Graph").Select

    ElseIf Statut = False Then
        Sheets("Analyse").Visible = False
        Sheets("Power Q").Visible = False
        Sheets("Graph").Protect Password:="******"
End If

End Sub
       
Rechercher des sujets similaires à "macro vba erreur suite deprotection via code"