XL 2016 protéger et déprotéger plusieurs feuilles par macro

halecs93

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Pour éviter des manipulations "hasardeuses" des utilisateurs de mon fichier, j'ai voulu, par macro, déprotéger une partie des feuilles du classeur à l'ouverture d'un userform et les protéger à nouveau à sa fermeture.

J'ai fait, pour me donner une idée, un enregistrement d'une macro mais le code me parait un peu "lourd". Y aurait-il un moyen de faire plus simple ?

Voici le code

Sub deproteger()
'
' deproteger Macro
'

'
Sheets("JANVIER").Select
ActiveSheet.Unprotect
Sheets("FEVRIER").Select
ActiveSheet.Unprotect
Sheets("MARS").Select
ActiveSheet.Unprotect
Sheets("AVRIL").Select
ActiveSheet.Unprotect
Sheets("MAI").Select
ActiveSheet.Unprotect
Sheets("JUIN").Select
ActiveSheet.Unprotect
Sheets("JUILLET").Select
ActiveSheet.Unprotect
Sheets("AOUT").Select
ActiveSheet.Unprotect
Sheets("SEPTEMBRE").Select
ActiveSheet.Unprotect
Sheets("OCTOBRE").Select
ActiveSheet.Unprotect
Sheets("NOVEMBRE").Select
ActiveSheet.Unprotect
Sheets("DECEMBRE").Select
ActiveSheet.Unprotect
End Sub
Sub proteger()
'
' proteger Macro
'

'
Sheets("JANVIER").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("FEVRIER").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("MARS").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("AVRIL").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("MAI").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("JUIN").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("JUILLET").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("AOUT").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("SEPTEMBRE").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("OCTOBRE").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("NOVEMBRE").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("DECEMBRE").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
End Sub




Et, au cas où l'ensemble des feuilles composant le classeur.

DONNEES
JANVIER
FEVRIER
MARS
AVRIL
MAI
JUIN
JUILLET
AOUT
SEPTEMBRE
OCTOBRE
NOVEMBRE
DECEMBRE
RECAPITULATIF
FICHE INFOS
CALCULS


Un grand merci par avance.
 

fanfan38

XLDnaute Barbatruc
Bonjour
VB:
dim i as integer
for i=1 to sheets.count
  if sheets(i).name<>"Données" or  sheets(i).name<>"CALCULS" or  sheets(i).name<>"FICHE INFOS" or  sheets(i).name<>"RECAPITULATIF" then
    sheets(i).unprotect 'ou  sheets(i).protect
  endif
next

A+ François
sinon sheets("JANVIER") .protect'(ou unprotect) suffisent
 

halecs93

XLDnaute Occasionnel
Bonjour
VB:
dim i as integer
for i=1 to sheets.count
  if sheets(i).name<>"Données" or  sheets(i).name<>"CALCULS" or  sheets(i).name<>"FICHE INFOS" or  sheets(i).name<>"RECAPITULATIF" then
    sheets(i).unprotect 'ou  sheets(i).protect
  endif
next

A+ François
sinon sheets("JANVIER") .protect'(ou unprotect) suffisent
Merci beaucoup..... tout de suite, c'est plus clair et plus simple :)
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 049
Membres
101 882
dernier inscrit
XaK_