Macro pour protéger une étendue de feuille

Fermé
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 - 13 août 2009 à 18:56
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 - 14 nov. 2010 à 21:36
Bonjour,

Voilà je souhaiterai créer une macro qui me permette de protéger ou d'oter la protection (sans mot de passe) sur une étendue de feuille.

Voilà ce que j'ai tenté sans succès :

Sub Portéger_feuilles () 'macro pour protéger
Sheets ("Nom de la première feuille de l'étendue":"Nom de la dernière feuille de l'étendue").Select
Selection.Protect
End Sub


Quelle procédure dois-je utiliser ?
A voir également:

3 réponses

m@rina Messages postés 21211 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 27 décembre 2024 11 373
14 août 2009 à 00:43
Bonjour,

Il me semble que les méthodes Protect et Unprotect ne peuvent s'affecter qu'à un seul objet.
Il faut donc faire une boucle :

Sub proteger()
Dim feuilles, feuille
feuilles = Array(1, 2, 5)  'choisir les feuilles à protéger
For Each feuille In ActiveWorkbook.Sheets(feuilles)
feuille.Protect
Next
End Sub


m@rina
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
14 août 2009 à 13:10
Ok,
merci de ton aide, je vais esayer ça quand j'aurai un petit moment.

nemotri.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
14 août 2009 à 19:35
Bonsoir m@rina,


Etant donné que mon étendue de feuille à protéger (ou "déprotéger") est importante, est que je peux marquer après par exemple : Array (2 to 65)

Merci.
0
m@rina Messages postés 21211 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 27 décembre 2024 11 373
16 août 2009 à 11:43
Bonjour,

Tu ne peux pas mettre Array x to y.
Il faut faire une ou plusieurs boucles de type :

For feuille = 2 To 30
ActiveWorkbook.Sheets(feuille).Protect
Next


Si tes feuilles à protéger ont un point commun, par exemple le nom, tu pourrais faire :

For Each feuille In ActiveWorkbook.Sheets
If Left(feuille.Name, 4) = "toto" Then
feuille.Protect
End If
Next


m@rina

0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
14 nov. 2010 à 21:36
Bonsoir,

Je déterra un peu mon vieux post pour une petite précision.
J'arrive bien à faire fonctionner une macro pour protéger ou déprotéger une étendue de feuille seulement j'aimerai modifier les critères de la protéction. En effet, j'aimerai protéger les feuilles mais qu'àprès la protection activée on puisse sélectionner les cellules déverrouillées et modifier le formet des cellules.

Mais je ne sais pas comment faire. Il semble que par défaut les critères sélectionner les cellules vérouillées et sélectionner des cellules déverrouillées soient activés. Comment changer ça ?

Merci d'avance.
0