[VBA] Désactiver les "erreur d'execution" / Verouiller VBA

Bonjour,

J'ai une feuille Excel protégée par mot de passe.

Lorsque je lance une macro, celle ci déverouille la feuille, modifie ce qu'il y a à modifier et la reverouille.

Jusque la, pas de soucis.

Sub ma_macro()
Call POFF()
' instructions
Call PON()
End Sub
Sub POFF()

    motdepasse = Range("Paramètres!E53").Value
    ActiveSheet.Unprotect motdepasse

End Sub

Sub PON()

    motdepasse = Range("Paramètres!E53").Value
    ActiveSheet.Protect motdepasse, True, True, True

End Sub

Comme ca, mes macros PON et POFF sont appelable plusieurs fois.

Tout se passe bien jusqu'a ce que je veuille changer le mot de passe.

Dans la cellule E53 du classeur, j'ai mis le mot de passe.

Lorsque je souhaite changer, et bien la macro POFF plante car il ne peut déverouiller la feuille car le mot de passe n'est pas correct.

Je souhaiterais désactiver ce genre de fenêtre si l'erreur se produit:

pb 25da226

Application.displayAlerts ne fonctionne pas.

Pouvez-vous m'éclairer ?

Ou si cela n'est pas possible, est-il possible à la limite de mettre le mot de passe en dur dans la macro (oui) mais de protéger le code source des modules VBA ?

Merci pour votre aide.

Bonjour,

Remplace cette instruction

motdepasse = Range("Paramètres!E53").Value

par

motdepasse = Sheets("Paramètres").Range("E53")

Aussi juste après SUB POFF, mettre --> Dim motdepasse as integer

Si ok, n'oublie pas de clique sur le V vert pour cloturer le fil.

Amicalement

Salut,

Me suis permis de mettre "String" plutôt que "Integer".

Néanmoins, cela ne fonctionne toujours pas:

J'ai le même message d'erreur.

Par exemple mon mot de passe c'est azerty.

Je veux changer pour des raisons de sécurité, je met qsdfg.

A la première execution, ca foire car le mot de passe est forcément différent.

Ce que je voudrais c'est que le message ne s'affiche pas Ou alors qu'une fenêtre s'affiche me demandant de saisir l'ancien mot de passe quand au premier essai, c'est pas bon, vois-tu ?

Merci d'avance pour ton aide précieuse.

Bonjour

Une solution

Déprotèges avec l'ancien mot de passe

inscrits ton nouveau mot de passe

Protèges avec ton nouveau mot de passe

Sauvegarde

Normalement plus de soucis

Bonsoir,

du coup j'ai trouvé, c'est un peu sur ton idée Banzai64.

Je met l'ensemble de mon code, cela pourra servir à d'autre

Sub POFF()
Dim motdepasse As String

On Error GoTo nouveaumdp

    motdepasse = Sheets("Paramètres").Range("E53")
    ActiveSheet.Unprotect motdepasse
    GoTo fin

nouveaumdp:
    Call PANCIEN
fin:

End Sub

Sub PON()

Dim motdepasse As String

    motdepasse = Sheets("Paramètres").Range("E53")
    ActiveSheet.Protect motdepasse, True, True, True

End Sub

Sub PANCIEN()

ancienmdp = inputbox("Veuillez saisir l'ancien mot de passe.", "Ancien mot de passe")
ActiveSheet.Unprotect ancienmdp
End Sub

Merci du coup de main, mais j'aurais pu chercher sur cette piste avant.

Ce n'est pas grave, cela permet de laisser une trace sur le forum et aider d'autres pour la suite... Car bien souvent, je vous lis sans poster, car les réponses y sont déjà apportées.

Bien Cordialement

Bonjour

Une idée

Ca marche aussi, je garde un oeil dessus, et j'archive ton fichier

re,

Juste pour faire plus simple sur la première macro.

Sub POFF()
Dim motdepasse As String
On Error GoTo fin
motdepasse = Sheets("Paramètres").Range("E53")
ActiveSheet.Unprotect motdepasse
Exit Sub
fin: Call PANCIEN
End Sub

Je te laisse continuer avec Banzai.

Si ok, n'oublie pas cliquer sur le V vert pour cloturer le fil

A bientôt

Dan a écrit :

re,

[...]

Si ok, n'oublie pas cliquer sur le V vert pour cloturer le fil

A bientôt

Voilà, Merci bien

Rechercher des sujets similaires à "vba desactiver erreur execution verouiller"