Protéger toutes les feuilles sauf certaines actions erreurs code

Bonjour à tous

Je débute en la matière mais ai toujours trouvé des tutos ou explications bien utiles que certains d'entre vous ont posté. Mais là, je cale.

Je souhaite protéger et déprotéger toutes les feuilles d'un classeur excel et ai réussi à enregistrer cette macro pour cela

Sub protegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de protection ?")

For Each feuille In Worksheets
feuille.Protect motPasse
Next feuille
End Sub

Sub deProtegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de déprotection ?")

For Each feuille In Worksheets
feuille.Unprotect motPasse
Next feuille

End Sub

Mais je souhaite autoriser des utilisateurs à modifier certaines actions :

- Sélectionner les cellules verrouillées

- Sélectionner les cellules déverrouillées

- Format de Cellule

- Modifier les objets

J'ai donc ajouté certain éléments à la macro (voir ci-dessous) mais cela ne fonctionne pas....

Sub protegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de protection ?")

For Each feuille In Worksheets
Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormatingCells:=True
feuille.Protect motPasse
Next feuille
End Sub

Sub deProtegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de déprotection ?")

For Each feuille In Worksheets
feuille.Unprotect motPasse
Next feuille

End Sub

Pouvez-vous me donner un coup de main ? J'ai regardé les autres posts mais je sèche...

Un grand merci pour votre aide

Emmanuelle

Bonjour emaga et bienvenue

Normalement, l'instruction doit être tout simplement

feuille.Protect Password:=motPasse, DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingCells:=True

Attention de bien orthographier les arguments nommés !

Ce qui n'était pas le cas de "AllowFormattingCells" avec un seul "t"

A+

Merci JExcel pour té réponse

Alors j'ai testé mais cela ne fonctionne pas

Je te joins un fichier "test" pour que tu puisses voir peut-être ce qui ne va pas ?

Merci merci

Re,

Oups, ça me semblait logique, mais j'ai oublié de préciser qu'il fallait supprimer la ligne

Protect DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormatingCells:=True

Le code final doit être

Sub protegerTout()
  Dim feuille As Worksheet: Dim motPasse As String
  motPasse = InputBox("Mot de passe de protection ?")
  For Each feuille In Worksheets
  feuille.Protect Password:=motPasse, DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
  Next feuille
End Sub

Bon la feuille est déjà protégée et je n'ai pas le mot de passe

A+

JExcel

Un immense merci !! Ca fonctionne !!!

Bon je vais me mettre en mode apprentissage sur le cours VBA du site maintenant pour améliorer mes compétences

Parce que lorsque l'on maîtrise ça a l'air magique

Cool

JExcel

Un immense merci !! Ca fonctionne !!!

Mais de rien

Bon je vais me mettre en mode apprentissage sur le cours VBA du site maintenant pour améliorer mes compétences

Parce que lorsque l'on maîtrise ça a l'air magique

Ca l'est magique

Au plaisir

Bonjour

Je relance le sujet car après utilisation du fichier je souhaiterais affiner la commande macro. En fait, j'aimerais pouvoir ajouter que l'utilisateur peut "sélectionner les cellules verrouillées" donc en donner l'autorisation dans la commande macro (afin de pouvoir notamment modifier la couleur des cellules et uniquement cela sur les cellules verrouillées).

Que dois-je ajouter à la commande macro ?

Merci merci !

Emmanuelle

Bonjour,

Pour savoir et apprendre, il suffit d'utiliser -> Enregistreur de macro

Bonjour JExcel

Merci pour votre réponse. Oui, je m'y mets, j'ai déjà programmé différente macros avec l'enregistreur.

Là, je voulais juste rajouter à celle déjà faite, donc ne pas faire tout le process d'enregistrement...! Bon je viens de faire un test avec l'enregistreur pour juste protéger une feuille avec comme autorisations de sélectionner les cellules verrouillées et les cellules déverrouillées

Sub Macrotest()
'
' Macrotest Macro
'

'
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveSheet.EnableSelection = xlNoRestrictions
End Sub

Si je comprends bien c'est "ActiveSheet.EnableSelection = xlNoRestrictions" que je dois ajouter ?

Bonjour,

Il faut ajouter la ligne au code précédemment donné, en utilisant l'objet feuille définit

Sub protegerTout()
  Dim feuille As Worksheet: Dim motPasse As String
  motPasse = InputBox("Mot de passe de protection ?")
  For Each feuille In Worksheets
    feuille.EnableSelection = xlNoRestrictions
    feuille.Protect Password:=motPasse, DrawingObjects:=False, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
  Next feuille
End Sub

bonjour le fil,

c'est mon opinion, mais c'est une construction dangeureuse de demander le mot de passe et de l'appliquer pour protèger les feuilles et plus tard de demander ce même mot pour faire le contraire. Une simple erreur typographique (par vous ou un autre) au moment de la protection est tout est vérouillé. Vous pouvez commencer à chercher des combinaisons possibles jusqu'à .... .

Vous pouvez mettre ce mot quelque part dans un variable en VBA ou une plage nommée ou ... .

Bonjour

Tout d'abord merci encore Jexcel, cela fonctionne parfaitement !!

BsAlv, oui ce type d'erreur est effectivement tout à fait possible et serait bien malencontreux.... mais comment faire pour le "stocker" dans une variable en VBA ?!

Emmanuelle

re,

oubien vous utilisez un variable publique comme "sMDP" oubien vous utilisez un nom défini (caché) comme "Mdp". Dépendant de votre choix vous modifiez la macro "ProtegerTout" La méthode avec le nom défini est un peu plus difficile pour des débutants pour trouver ce mot de passe.

11emaga.xlsm (15.26 Ko)

Bonjour Bart

Merci pour toutes ces explications et pour le fichier joint. je vais regarder ça, car effectivement ce serait mieux !

Merci encore à tous les deux

Emmanuelle

Rechercher des sujets similaires à "proteger toutes feuilles sauf certaines actions erreurs code"