VBA /Protection onglet et autorisation sur certaines cellules

  • Initiateur de la discussion Initiateur de la discussion ValCou
  • 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 !

V

ValCou

Guest
bonjour

Je dois protéger mon onglet mais laisser quelques cellules modifiables. Jusque là pas de soucis : mon code marche parfaitement

Code:
Worksheets(p_onglet).Protection.AllowEditRanges.Add Title:="Range1", Range:= _
        Range("D29:O29,Q29:AB29,AD29")
    Worksheets(p_onglet).Protect Password:="pwd", DrawingObjects:=True, Contents:=True, Scenarios:=True
Maintenant je voudrai faire passer en dynamique la plage de cellule que j'autorise. Et là je coince. J'ai mis dans une variable range la plage en question et écrit mon code de cette manière
Code:
Set PlageTot =  Range("Q17:AB18,AD17:AD18")
    Worksheets(p_onglet).Protection.AllowEditRanges.Add Title:="Range2", Range:=PlageTot

J'obtiens une erreur 1004 "Application-defined or object-defined error"

Pouvez vous me donner un coup de main ?

Merci d'avance 🙂

Valérie
 
Re : VBA /Protection onglet et autorisation sur certaines cellules

Salut,

A premiere vu je dirais que le probleme peu venir du fait

  1. que tu affectes le meme Title donc soit tu le supprimes avant soit tu le modifies
  2. que ta feuille est protege lors de l'ajout donc il faut deproteger avant
Quelque chose du style:
Code:
    Worksheets("feuil1").Unprotect password:="xxxxx"
    on error resume next    
        Worksheets("feuil1").Protection.AllowEditRanges("Range2").Delete
    on error goto 0    
    Worksheets("feuil1").Protection.AllowEditRanges.Add Title:="Range2", Range:=plagetot
    Worksheets("feuil1").Protect password:="xxxxx"
Je te laisse verifier
 
Re : VBA /Protection onglet et autorisation sur certaines cellules

Merci pour ta réponse.
Cependant, je ne m'en sors pas mieux. En effet les deux titres sont différents : range1 et range2. Et puis, je me suis mal exprimée car la protection de la feuille je la fais en dernier de cette manière :
Code:
 Set PlageTot =   Range("Q17:AB18,AD17:AD18")
      
    Worksheets(p_onglet).Protection.AllowEditRanges.Add Title:="Range1", Range:=[COLOR="Red"]PlageTot[/COLOR]
         
    Worksheets(p_onglet).Protection.AllowEditRanges.Add Title:="Range2", Range:= _
        Range("D23:O23,Q23:AB23,AD23")
    Worksheets(p_onglet).Protection.AllowEditRanges.Add Title:="Range3", Range:= _
        Range("D29:O29,Q29:AB29,AD29")
    Worksheets(p_onglet).Protect Password:="pwd", DrawingObjects:=True, Contents:=True, Scenarios:=True

le blocage se fait bien lorsque j'utilise PlageTot comme référence dans l'instruction AllowEditRanges

A +

Valérie
 
Re : VBA /Protection onglet et autorisation sur certaines cellules

Salut,

J'ai finalement fais un test pour verifier mes dire.
Et je confirme.

Essaie de mettre ceci:
Code:
Worksheets(p_onglet).unprotect "pwd"
On error resume next
    Worksheets(p_onglet).Protection.AllowEditRanges("Range1").Delete
    Worksheets(p_onglet).Protection.AllowEditRanges("Range2").Delete
    Worksheets(p_onglet).Protection.AllowEditRanges("Range3").Delete
On error goto 0
juste avant ou juste apres
Code:
Set PlageTot....
Si ca fonctionne c'est que soit ta feuille est protege
soit les Titles Range1 ou Range2 ou Range3 existent d'un test precedent
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
2
Affichages
1 K
nicolase78
N
Retour