VBA Excel - ActiveWorkbook.Protect [Résolu]

Messages postés
444
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
- - Dernière réponse : JM247L
Messages postés
444
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
- 5 févr. 2008 à 10:26
Bonsoir,
Sous VBA, la fonction Excel "ActiveWorkbook.Protect" est une bascule dans la mesure ou si le fichier est protégé, l'exécution de cette fonction le déprotège et vicé versa.
Quelqu'un connaitrait il un moyen de controler l'état de protection du fichier avant l'exécution de cette fonction
   J'ai testé "If ActiveWorkbook.Protect = True" mais la chose ne l'accepte pas

D'avance merci<?xml:namespace prefix <gras>v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype> </gras>Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
3
Merci
Salut,

tu peux essayer ceci :

If ActiveWorkbook.ProtectStructure Or ActiveWorkbook.ProtectWindows Then     MsgBox "ProtectStructure " & ActiveWorkbook.ProtectStructure & vbCrLf  & "ProtectWindows " & ActiveWorkbook.ProtectWindows
End If

A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 203 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bigfish_le vrai
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
...

apres reflexion je pense qu'une petite explication s'impose.
comme tu le sais surement deja quand tu proteges un document excel, je ne parle pas ici d'une feuille mais bien du workbook lui meme, tu as 2 options possible :
- la protection de la structure du document
- la protection des fenetres
il n'est pas possible de proteger un document sans choisir l'une de ces options c'est peut etre pour cette raison AitiveWorBook.Protec ne suffit pas.
Tu pourrais faire utiliser soit ;

if ActiveWorkbook.ProtectStructure = true then

ou

if ActiveWorkbook.ProtectWindows = true then

mais cela ne te suffirais pas pour savoir que ton document est protegé donc la solution

with ActiveWorkbook    if .ProtectWindows true or .ProtectStructure true then  MsgBox "Ce document est protege "
end With

Vala, tu auras sans doute compris sans cette explication mais elle s'imposait peut etre pour d'autre

A+
Commenter la réponse de bigfish_le vrai
Messages postés
444
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
1
0
Merci
Salut Philippe,
C'est exactement ce que je cherchais. J'étais bêtement parti du principe que si ".protect" n'acceptait pas le test vrai/faux, il devait en être de même pour "ProtectStructure" et "ProtectWindows" ... comme quoi !!!

J'ai donc utilisé ce qui suit
      If ActiveWorkbook.ProtectStructure = False And _  
               ActiveWorkbook.ProtectWindows = False Then _ 
         ActiveWorkbook.Protect "z"

Merci et bonne journée




<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??>
<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter">
</v:stroke>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0">
</v:f>
<v:f eqn="sum @0 1 0">
</v:f>
<v:f eqn="sum 0 0 @1">
</v:f>
<v:f eqn="prod @2 1 2">
</v:f>
<v:f eqn="prod @3 21600 pixelWidth">
</v:f>
<v:f eqn="prod @3 21600 pixelHeight">
</v:f>
<v:f eqn="sum @0 0 1">
</v:f>
<v:f eqn="prod @6 1 2">
</v:f>
<v:f eqn="prod @7 21600 pixelWidth">
</v:f>
<v:f eqn="sum @8 21600 0">
</v:f>
<v:f eqn="prod @7 21600 pixelHeight">
</v:f>
<v:f eqn="sum @10 21600 0">
</v:f>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">
</v:path>
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
<o:lock v:ext="edit" aspectratio="t">
</o:lock>
</v:shapetype>


 





Cliquer "Réponse Acceptée




"














Partageons Notre Savoir & Nos Acquis



- JML
Commenter la réponse de JM247L