Macro ou autre pour proteger des celulles dans un classeur de plusieurs pages

  • Initiateur de la discussion patricia.750190
  • Date de début
P

patricia.750190

Guest
Bonjour ,

Est-ce que quelqu'un pourrait avoir la gentillesse de m'indiquer de façon simple , comment faire une macro qui en l'executant me permettrait de protéger ou déprotéger en 1 seule opération ou 2( je ne vais pas faire la fine bouche" Lol") des cellules dans un classeur de 32 feuilles

Voilà les cellules que je veux protéger

A3:B25

E3:E25
G3:G25
M3:M25
Q3:Q25
R3:U25
X3:X25

A26:X27
A1:X3


je ne sais pas si c'est utile mais au cas ou ?....
L a première feuille s'appelle
=Allain!$A$1:$X$27
la derniere
=Divers2!$A$1:$X$27

j'espère que c'est possible (surtout pour moi ) sinon je vais les protéger une par une...

merci pour votre aide
 
M

Minick

Guest
Re: Macro ou autre pour proteger des celulles dans un classeur de plusieurs page

Salut,

Tu peux ajouter cette macro par exemple.
Elle suppose que l'ensemble des feuilles du classeur doivent etre protegées.
Tu peux eventuellement mettre un mot de passe en changeant la ligne:
- MotDePasse="" par MotDePasse="Ton mot de passe"



Sub Protection()
Dim MotDePasse As String
Dim ActFeuil As String
Dim NbrFeuil As Byte
Dim CptFeuil As Byte

Application.ScreenUpdating = False

ActFeuil = ActiveSheet.Name
MotDePasse = ""
For CptFeuil = 1 To ThisWorkbook.Sheets.Count
Sheets(CptFeuil).Activate
ActiveSheet.Unprotect Password:=MotDePasse
Cells.Locked = False
Range("A3:B25,E3:E25,G3:G25,M3:M25,Q3:Q25,R3:U25,X3:X25,A26:X27,A1:X3").Locked = True
ActiveSheet.Protect Password:=MotDePasse, Contents:=True, Scenarios:=True
Next

Sheets(ActFeuil).Activate
Application.ScreenUpdating = True
End Sub


@+
Minick
 
@

@+Thierry

Guest
Bonsoir Patricia, Minick, le Forum

Je suggère d'éviter de sélectionner les feuilles une à une comme tu le fais Minick, c'est une question d'efficacité, car même avec screenudating à false, çà n'est pas conseillé pour obtenir un code optimisé.

Voici ce que çà donne en partant du principe comme que l'on veut appliquer la protection à toutes les feuilles du classeur :
Sub Protecting()
Dim x As Byte

For x = 1 To ThisWorkbook.Worksheets.Count
With Sheets(x)
.Unprotect
.Cells.Locked = False
.Range("A3:B25,E3:E25,G3:G25,M3:M25,Q3:Q25,R3:U25,X3:X25,A26:X27,A1:X3").Locked = True
.Protect
End With
Next x

End Sub


Maintenant si, par exemple, Patricia à une feuille "Interface" qui ne doit pas être touchée par cette procédure :

Sub Protecting()
Dim x As Byte

For x = 1 To ThisWorkbook.Worksheets.Count
If Worksheets(x).Name <> "Interface" Then
With Sheets(x)
.Unprotect
.Cells.Locked = False
.Range("A3:B25,E3:E25,G3:G25,M3:M25,Q3:Q25,R3:U25,X3:X25,A26:X27,A1:X3").Locked = True
.Protect
End With
End If
Next x

End Sub

Enfin il y a plusieurs possibilités, mais dans la mesure du possible il est toujours conseillé d'éviter les Select et autres Activate, sauf dans certains cas de figures sous Excel 97 comme le fait remarquer zon dans un autre fil.

Bon Samedi soir à tous et toutes
@+Thierry
 
P

patricia.750190

Guest
Thierry Minick,

Bonsoir et merci pour vos Macro le verrouillage des cellules est ok ..
C'est beau le savoir , je me suis evertuée a essayer de faire un enregistrement d'une macro pendant la moitié de l'après midi .

Par contre si j'étais obligé de dévérouiller momentanément toutes les feuilles pour pouvoir rajouter quelque chose ,
comment faut -il que je procède

Pour une feuille j'enlève la protection mais pour toutes ????

Merci et bonne FIN DE Week-end
 
P

patricia.750190

Guest
Re: Macro ou autre pour proteger des celulles dans un classeur de plusieurs page

Problème réglé Merci....

j'ai modifié la macro

Sub unProtecting()
Dim x As Byte

For x = 1 To ThisWorkbook.Worksheets.Count
With Sheets(x)
.Unprotect
.Cells.Locked = False
.Range("A3:B25,E3:E25,G3:G25,M3:M25,Q3:Q25,R3:U25,X3:X25,A26:X27,A1:X3").Locked = True
.Unprotect
End With
Next x

End Sub
 

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67