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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

halecs93

XLDnaute Impliqué
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.
 
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
 
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 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
934
Retour