Protection partielle

  • Initiateur de la discussion Initiateur de la discussion nat54
  • Date de début Date de début

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 !

nat54

XLDnaute Barbatruc
Bonjour,

Voilà j'ai un classeur avec une trentaine d'onglets.
Chaque onglet est identique.

Ce que je souhaite :
- empêcher toute action sur la plage A1 à H22 (formules...) : j'ai verrouillé les cellules (une partie données protégées)
- en dehors de cette plage pouvoir utiliser les formats (gras, souligné..) : j'ai déverrouillé ces plages (une partie analyse où je dois pouvoir commenter)


J'utilise la macro suivante pour protéger/déprotéger mon classeur
VB:
Option Explicit
'Déclaration des variables de module => utilisables par toutes les procédures du module
Const psw As String = "test" 'En déclarant le mdp au niveau module, plus besoin de le modifier x fois dans les procédures
Dim x As Worksheet
Sub Protege()
For Each x In ThisWorkbook.Worksheets
x.Protect psw, True, True, True
Next
End Sub
Sub DeProtege()
For Each x In ThisWorkbook.Worksheets
x.Unprotect psw
Next
End Sub

Existe t il un moyen de faire cela ?

Merci d'avance,

Nat
 
Re : Protection partielle

Bonjour,

verrouille les plages A1:H22 de chaque feuille
protège chaque feuille (mot de passe = motdepasse"

A exécuter à partir de feuilles de calcul NON protégées, sinon ça marche pas

VB:
Sub Macro1()

    For Each sh In ThisWorkbook.Sheets
    sh.Range("A1:H22").Locked = True
    sh.Range("A1:H22").FormulaHidden = True
    sh.Protect Password:="motdepasse", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Next sh
End Sub
 
Re : Protection partielle

Bonjour Nat54,

1) prends l'habitude de donner des noms explicites à tes variables
Sht pour Sheets (par exemple)

Sinon, voici un code qui pourra t'aider
Code:
Option Explicit
'Déclaration des variables de module => utilisables par toutes les procédures du module
Const psw As String = "test" 'En déclarant le mdp au niveau module, plus besoin de le modifier x fois dans les procédures
Dim Sht As Worksheet


Sub ChgtProtection()

  For Each Sht In ThisWorkbook.Worksheets

    ' supprimer la protection de la feuille
    Sht.Unprotect psw
    ' Enlever la protection de toutes les cellules
    Sht.Cells.Locked = False
    ' Protéger les cellules A1:H22
    Sht.Range("A1:H22").Locked = True
    ' Protéger la feuille
    Sht.Protect Password:=psw, DrawingObjects:=True, Contents:=True, Scenarios:=True
  Next
End Sub

Edit : oups salut Mikachu 😉
Il faut penser à déprotéger la feuille avant

a+
 
Re : Protection partielle

re,

ça doit sûrement marcher mais je n'y arrive pas
je ne comprends pas,
avec ma macro précédente les feuilles devaient être protégées via le MdP "test"
or quand je fais manuellement outils / protection / ôter protection et que je saisis test, cela ne marche pas !

du coup ta macro me met le même message d'erreur qu'en manuel à savoir
mot de passe non valide
vérifier qu ela touche VERR MAJ n'est pas activée...

ps : désolée pour le nom de variable c'est une macro que j'avais récupérée il y a fort longtemps sur XLD mais que je garde dans ma bible :d excel !

edit : ouh la la je voulais vous faire part d'un classeur exemple en anonymisant.. mais catastrophe !
je n'arrive plus du tout à déprotéger...
 
Re : Protection partielle

Re,

Argument introuvable

Peut-être que cela n'existe pas en excel 2000 ?

VB:
Sub ChgtProtection()
  For Each Sht In ThisWorkbook.Worksheets
    ' supprimer la protection de la feuille
    Sht.Unprotect psw
    ' Enlever la protection de toutes les cellules
    Sht.Cells.Locked = False
    ' Protéger les cellules A1:H22
    Sht.Range("A1:H22").Locked = True
    ' Protéger la feuille
    Sht.Protect Password:=psw, DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
  Next
End Sub
 
Re : Protection partielle

Oups, en effet AllowFormatingCells n'est disponible que à partir de XL 2002...

Deux solutions:
- déprotéger, appliquer le style, reprotéger
- Passer par des boutons et macros qui font le travail

J'ai préparé la deuxième solution (pj)
 

Pièces jointes

- 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
7
Affichages
975
D
Réponses
4
Affichages
2 K
Djlolo2
D
Retour