Macro Protection automatique des feuilles d'un classeur

FanExcel

XLDnaute Occasionnel
Bonjour,

J'ai une macro qui permet de protéger toutes les feuilles d'un classeur.
Je souhaite exclure une ou plusieurs feuilles qui ne doivent pas être protégées.

Comment Puis je modifier le code?

Merci

'Proteger
Sub ProtecFeuilles1()
Application.ScreenUpdating = False
Dim MDP As String
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "yes" Then Exit Sub
For Each f In Worksheets
f.Protect MDP
Next
End Sub
 
C

Compte Supprimé 979

Guest
Re : Macro Protection automatique des feuilles d'un classeur

Salut FanExcel,

Il suffit d'ajouter une condition
Code:
...
For Each f In Worksheets
  If F.Name <> "Toto" and F.Name <>"Titi" Then
    f.Protect MDP
  End If
Next
...

A+
 

Staple1600

XLDnaute Barbatruc
Re : Macro Protection automatique des feuilles d'un classeur

Bonjour



Ici si une feuille se nomme test ou tesson elle ne sera pas protégé
toutes les autres feuilles du classeur le seront
Code:
Sub ProtecFeuilles1()
Dim i As Long
Application.ScreenUpdating = False
Dim MDP As String
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "yes" Then Exit Sub
For i = 1 To Sheets.Count
If Not Worksheets(i).Name Like "tes*" Then
Worksheets(i).Protect MDP
End If
Next
End Sub

Edit: bonjour BrunoM45
 
Dernière édition:

FanExcel

XLDnaute Occasionnel
Re : Macro Protection automatique des feuilles d'un classeur

Bonjour,

Je reviens sur ce post car, bien que la macro fonctionne très bien, je m'aperçois que, si un utilisateur fait Outils\Protection\Oter la protection de la feuille, cela fonctionne.

Il doit manquer quelque chose dans la macro? :confused:
La voici

'Proteger
Sub ProtecFeuilles1()
Application.ScreenUpdating = False
Dim MDP As String
MDP = InputBox("Entrer mot de passe :", "Activation de la protection des feuilles")
If MDP <> "toto" Then Exit Sub
For Each f In Worksheets
f.Protect MDP
Next
End Sub

d'avance merci:):)
 

FanExcel

XLDnaute Occasionnel
Re : Macro Protection automatique des feuilles d'un classeur

Bonjour,

Je croyais ce problème résolu quand un de mes collègues, utilisateur d'une maquette budgétaire me fait remarquer que lorsqu'il fait Format\Feuilles\Afficher dans ma nouvelle maquette, ça marche.:D

Je joins un bout de fichier allégé qui illustre bien cette problématique.
Le bouton Administrateur (Merci Stapple) affiche les feuilles masquées et déprotège le classeur. Le bouton Masquer et protéger fonctionne aussi très bien (Re-merci Stapple).
Le mot de passe est "toto".

Je voudrais qu'il soit impossible d'afficher les feuilles par Format\Feuille mais ne sait pas comment faire.:confused::confused:

Merci de votre aide
et bonne journée à tout le forum !:):)
 

Pièces jointes

  • Test MacroB.xls
    129.5 KB · Affichages: 153
  • Test MacroB.xls
    129.5 KB · Affichages: 165
  • Test MacroB.xls
    129.5 KB · Affichages: 167
C

Compte Supprimé 979

Guest
Re : Macro Protection automatique des feuilles d'un classeur

Salut FanExcel,

Il faut masquer tes feuille avec :
Code:
'Masquer feuilles
Sub MasquerFeuilles3()
  For Each sh In Sheets(Array("Annx1", "Annx2", "DEF"))
    sh.Visible = [COLOR=blue][B]xlSheetVeryHidden[/B][/COLOR]
  Next sh
End Sub

Comme ça elles ne sont pas visibles ;) dans le menu Afficher
mais il te faudra protéger également ton VBAProject sinon par là on peut les faire ré-aparaitre

A+
 

FanExcel

XLDnaute Occasionnel
Re : Macro Protection automatique des feuilles d'un classeur

Bonjour à tous

La maquette est opérationnelle sauf que lorsqu'elle revient de mes "clients", j'ai parfois un souci lorsque j'active le bouton administrateur et le mot de passe "toto".
J'ai le message "Impossible de définir la proropriété Visible de la classe Worksheet".
ce n'est pas systématique mais arrive et là, je suis planté sur la macro Afficher feuille ci dessous

'Afficherfeuilles
Sub AfficherFeuilles()
Application.ScreenUpdating = False
Dim n As Integer
For n = 1 To Sheets.Count
Sheets(n).Visible = True

Next n
End Sub

Une précision qui peut être utile?

Sur un classeur qui "boge"
Lorsque j'ouvre VBA, module2 et que j'exécute la macro 'Déprotéger puis la macro 'Afficher feuilles, et dans cet ordre, cela fonctionne.
Le classeur se déprotège, les feuilles masquées s'affichent.

J'enregistre alors le classeur.
A partir de là, le bouton administrateur fonctionne à nouveau sans problème.

Je ne comprends plus rien....
J'ai donc une solution mais que puis je faire pour éviter ces étapes?

souhaitant que cette précision apporte un éclairage sur la problématique
Bien à vous
 

Pièces jointes

  • TestMacro.xls
    119 KB · Affichages: 125
  • TestMacro.xls
    119 KB · Affichages: 127
  • TestMacro.xls
    119 KB · Affichages: 127
C

Compte Supprimé 979

Guest
Re : Macro Protection automatique des feuilles d'un classeur

Salut FanExcel ;)

Tout à fait normal, tu as protégé ton classeur
VBA fait comme toi lorsque tu lances un commande

Si tu essayes d'afficher ta feuille "DEF", tu n'as pas le menu actif, il faut d'abord déprotéger ton classeur.

Donc utilises : ActiveWorkbook.Unprotect
Ou ne protège pas ton classeur

A+
 

FanExcel

XLDnaute Occasionnel
Re : Macro Protection automatique des feuilles d'un classeur

Bonjour BrunoM45, bonjour le forum

Surement, mais ai pas tout compris:eek:

Le bouton administrateur, déprotège et affiche les feuilles. Il affiche également un bouton inverse qui me permet de masquer les feuilles et les protéger lorsque je renvoie le classeur à mes collègues ("clients").

Je voudrais garder cette fonctionalité car j'ai queques collègues "touche à tout" et dans le classeur complet, des cellules protégées, avec des calculs.

Le forum m'a beaucoup aidé pour cet outil mais , n'étant vraiment que très débutante en VBA, je ne suis pas capable de corriger cette anomalie.
A quel endroit de mes macros dois je modifier Protect? Dans le module2 ou dans le book?

D'avance merci et bonne journée !:)
 
C

Compte Supprimé 979

Guest
Re : Macro Protection automatique des feuilles d'un classeur

Re,

Modifie la sub comme suit
Code:
Sub okgo()
'Ici mettre ton code
  MsgBox "accès administrateur", vbExclamation
  [COLOR=blue][B]' Déprotéger le classeur d'abord
  ThisWorkbook.Unprotect
[/B][/COLOR]  AfficherFeuilles
  DProtecFeuilles0
  Feuil1.CommandButton2.Visible = True
End Sub

A+
 

Discussions similaires

Réponses
5
Affichages
443
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux