Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Protection Classeur VBA

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
 

Theze

XLDnaute Occasionnel
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"
 

Sylvie_076

XLDnaute Nouveau
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
 

youky(BJ)

XLDnaute Barbatruc
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
 

youky(BJ)

XLDnaute Barbatruc
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

  • Mask_Forum.xlsm
    32 KB · Affichages: 83

Sylvie_076

XLDnaute Nouveau
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…