Protection Classeur VBA

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 !

Sylvie_076

XLDnaute Nouveau
Bonjour à Toutes et à Tous,

Je viens de reprendre un Classeur Excel (prenant en charge les macros).
Ce Classeur est composé de 3 feuilles.
Sur la Feuil1, un bouton avec mot de passe me permet d'afficher la Feuil2 masquée à l'ouverture du Classeur.
Actuellement, les 3 feuilles sont protégées en écriture.
Les utilisateurs peuvent enrichir uniquement les cellules non verrouillées des Feuil1 et Feuil3.
Les personnes chargées de l'administration enrichissent la Feuil2.
A la fermeture et l’enregistrement du classeur, la Feuil2 est automatiquement masquée.

Mon problème est le suivant : Je souhaite que le Classeur soit protégé :
- Protéger avant l’affichage de la Feuil2,
- Protéger pendant l’affichage de la Feuil2
- Protéger automatiquement à la fermeture du classeur en même temps que la Feuil2 est masquée.

J’ai essayé d’inclure les instructions ci-dessous dans le ThisWorbook ou dans le Userform1.
ActiveWorkbook.Unprotect " mot de passe "
ActiveWorkbook.Protect "mot de passe"

Un message d’erreur s’affiche :
Erreur d’exécution ‘1004’
Impossible de définir la propriété Visible de la classe Worksheet

/*****************************************/

Le Code dans This Workbook est le suivant :
Private Sub Workbook_Open()
Sheets("Feuil2").Visible = xlVeryHidden
End Sub

Private Sub b_ok_Click()
If Me.TextBox1 = "toto" Then

/*****************************************/

Le Code dans Userform est le suivant :
Private Sub b_ok_Click()
If Me.TextBox1 = "toto" Then

Unload Me
Sheets("Feuil2").Visible = xlSheetVisible
Sheets("Feuil2").Select

Else
MsgBox "erreur"
Me.TextBox1 = ""
Me.TextBox1.SetFocus
End If
End Sub

/*****************************************/

J'ai longtemps parcouru le lien suivant :
https://www.excel-downloads.com/threads/protection-deprotection-classeur-vba.183026/
Je ne trouve pas la solution. Merci pour votre lecture et peut-être votre aide.
Sylvie
http://forum.excel-pratique.com/membre43251.html Sylvie_076
Nouveau venu

Messages : 3
Inscription : 18 Septembre 2016
Version Excel : 2010
 
Bonjour,
Un message d’erreur s’affiche :
Erreur d’exécution ‘1004’
Impossible de définir la propriété Visible de la classe Worksheet
Normal si ton classeur est protégé !
Il te faut ôter la protection avant de masquer la feuille justement avec les deux lignes de code que tu cites :
Code:
ActiveWorkbook.Unprotect " mot de passe "
Worksheets("Feuil2").Visible = False
ActiveWorkbook.Protect "mot de passe"
 
Bonjour,

Merci pour votre réponse.
L'objectif est que le classeur soit toujours protégé :
- avant l'affichage de la Feuil2
- lorsque la Feuil2 est affichée
- à la fermeture du classeur.
Pour le moment, le classeur fait toutes les opérations d'affichage et de masquage sans protection de celui-ci.

J'ai placé les 3 lignes de code dans l'UserForm1 ==> message d'erreur identique
J'ai placé ensuite ces 3 lignes de code dans le ThisWorkook ==> idem
Je patine... Souhaitez-vous consulter le fichier sur lequel je travaille.
Merci pour votre lecture.
Sylvie
 
Bonjour à tous,
j'ai replacé le unload Me

Bruno

Le Code dans This Workbook est le suivant :
Private Sub Workbook_Open()
ActiveWorkbook.Unprotect " mot de passe "
Sheets("Feuil2").Visible = xlVeryHidden
ActiveWorkbook.Protect "mot de passe"
End Sub


Le Code dans Userform est le suivant :
Private Sub b_ok_Click()
If Me.TextBox1 = "toto" Then
Sheets("Feuil2").Visible = xlSheetVisible
Sheets("Feuil2").Select
Unload Me
Else
MsgBox "erreur"
Me.TextBox1 = ""
Me.TextBox1.SetFocus
End If
End Sub
 
Hello,
Désolé de répondre tardivement.
Avec un fichier ça va tout seul.
A chaque enregistrement je masque la page et protège le classeur.
De cette façon à chaque ouverture du fichier la page est masquée et le classeur protégé.
Je pense que c'est OK
Bruno
 

Pièces jointes

Bonjour,
Votre réponse n'est pas du tout tardive.
Cela marche parfaitement et je vous en remercie.
J'ai ajouté l'instruction Sheets("Feuil1").Select dans le Private Sub Workbook_Open()
afin de toujours pointer sur la Feuil1 à l'ouverture.
Encore merci.
Sylvie
 
- 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
17
Affichages
296
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
76
Retour