[RESOLU] Tester si une feuille est protégée avec une couleur dans un UserForm

Ternoise

XLDnaute Occasionnel
Bonsoir le Forum

J'aimerais savoir si une feuille est déjà protégée ou pas grâce à une couleur dans un UserForm.

Le code pour protéger ne fonctionne pas non plus !

Le code pour protéger fonctionne

Surement tout bête mais bon ...

Merci de votre aide

David
 

Pièces jointes

  • Test_Protection.xls
    43.5 KB · Affichages: 88
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re

Voir ce que tu peux faire avec cette fonction personnalisée
Code:
Public Function Protection(wks As Worksheet) As Boolean
Protection = wks.ProtectContents
End Function

Code:
Sub testprotection()
MsgBox Protection(ActiveSheet)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re

Déjà, testes-le sur un classeur qui contient une feuille protégée
et lances la macro testprotection
Un message s'affichera
Déprotèges la feuille et relance testprotection
Un message s'affichera également, mais il dira le contraire du premier

Tu devrais alors mieux comprendre comment t'en servir ;)

PS: Moi je ne vois pas le rapport entre une couleur et une feuille protégée. ;)
 
Dernière édition:

Ternoise

XLDnaute Occasionnel
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re

J'avais déjà essayé le code proposé, mais erreur. Peut être un problème de version.

Afin que je comprenne mieux, ne faut il pas essayer avec mon fichier ?

En ce qui concerne la couleur, j'ai besoin de savoir pour la suite de mon projet .

David
 

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re

Alors je vais expliquer ce que fait la fonction
Si la feuille est protégée, elle renvoie VRAI (à cause du As Boolean)
Si elle n'est pas protégée, elle renvoie FAUX

Donc cette fonction peut s'utiliser de cette façon dans une macro
If Protection Then
'ton code VBA si feuille protégée
Else
'ton code VBA si feuille non protégée
End if

PS: j'ai testé mon code avant de le poster et pas d'erreur constatée sur mon PC.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re

Je poste une version plus aboutie
Code:
Private Function Protection(wks As Worksheet) As Boolean
Protection = wks.ProtectContents
End Function

Code:
Sub testprotectionII()
Dim nf$
nf = ActiveSheet.Name
MsgBox "La feuille nommée: " & nf & IIf(Protection(ActiveSheet), " est ", " n'est pas ") & "protégée", vbInformation, "TEST"
End Sub

MODE D'EMPLOI
1) Dans un nouveau classeur, protéges une feuille en faisant (Outils/Protection/Protéger la feuille
2) Insères dans VBE, un module standard et copies le code VBA
3) Lances la macro nommée testprotectionII
Un message doit s'afficher.

Ensuite, déprotèges ta feuille, et relances la macro.
 

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Afin que je comprenne mieux, ne faut il pas essayer avec mon fichier ?

Voici le code présent dans ton fichier pour le bouton TEST PROTECTION
Code:
Private Sub CommandButton1_Click()
UsfPasse.Show
End Sub

Il ne fait donc qu'afficher l'userform
donc si ce bouton doit tester l'état de protection de la feuille alors il faudrait écrire dans le code du bouton
Code:
Private Sub CommandButton1_Click()
call testprotection
End Sub


Et mettre dans un module (le Module1 par exemple) les codes ci-dessous
Code:
Public Function Protection(wks As Worksheet) As Boolean
Protection = wks.ProtectContents
End Function
Code:
Sub testprotection()
If Not Protection(ActiveSheet) Then
UsfPass.Show
Else
MsgBox "cette feuille est déjà protégée", vbCritical
End If
End Sub
 

Ternoise

XLDnaute Occasionnel
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Bonjour JM

Désolé de ma réponse tardive. Obligée de partir rapidement hier soir.

Impec avec les explications. Je comprend mieux. Merci

Mais pourquoi ce code ne fonctionne pas dans mon UserForm ?

Private Sub CmdValider_Click()
If UCase(Me.motpasse) = ([MdP_Feuille]) Then
ActiveSheet.Protect Structure:=False, Password:=([MdP_Feuille])
For Each s In ActiveSheet
s.Unprotect Password:=([MdP_Feuille])
Next s
End If
Unload Me
End Sub

Cordialement
David
 

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Bonjour à tous

Ternoise
A vue de nez, peut-être avec le Dim en plus
Code:
Private Sub CmdValider_Click()
Dim s As Worksheet
    If UCase(Me.motpasse) = ([MdP_Feuille]) Then
         ActiveSheet.Protect Structure:=False, Password:=([MdP_Feuille])
         For Each s In ActiveSheet
           s.Unprotect Password:=([MdP_Feuille])
         Next s
    End If
    Unload Me
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

>re


Je viens de lire plus attentivement ton code
Il y avait quelques incongruités*

Voici les modifs pour protéger toutes les feuilles du classeur (test ok sur mon pc)
Code:
Private Sub CmdValider_Click()
Dim s As Worksheet
    If UCase(motpasse) = [MdP_Feuille] Then
         For Each s In Worksheets
           s.Protect [MdP_Feuille]
         Next s
    End If
    Unload Me
End Sub

*
For Each s In ActiveSheet
Il ne peut pas y avoir plusieurs feuilles dans la feuille active
Ensuite tu protégeais la feuille active pour ensuite dans ta boucle déprotéger (Unprotect)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Tester si une feuille est protégée avec une couleur dans un UserForm

Re


Et là c'est mieux? ;)
Code:
Private Sub CmdValider_Click()
Dim s As Worksheet
    If StrConv(motpasse, vbProperCase) = [MdP_Feuille] Then
         For Each s In Worksheets
           s.Unprotect [MdP_Feuille]
         Next s
    End If
    Unload Me
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG