Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Affichage de l'état de protection d'une feuille

10 réponses
Avatar
michir
Bonjour,
Je souhaiterais conna=EEtre en permanence l'=E9tat de protection d'un feuil=
le, sans aller dans l'onglet "Revision"
Je m'explique, j'aimerais qu'en cellule P1 s'affiche "Prot=E9g=E9" ou "D=E9=
prot=E9g=E9" selon les cas
Est-ce possible ?
Merci
Michel
Je suis sous Excel 2010

10 réponses

Avatar
MichD
Bonjour,

Est-ce suffisant ?

Ajoute ceci dans le module Thisworkbook de ton classeur :

Ceci permet l'usage des macros même si la feuille est protégée même si
l'usager n'a pas accès au contenu des cellules par l'interface de la feuille de calcul.
'-------------------------
Private Sub Workbook_Open()
'Le "MotDePasse" est optionnel
'Feuil1 n'est pas le nom de l'onglet mais la propriété
'name visible dans la fenêtre de l'éditeur de code.
With Feuil1
.Protect "MotDePasse", True, True, True, True
.Range("A1") = "Feuille protégée"
End With
End Sub
'-------------------------

Et dans le module de la feuille ceci :
Le rafraîchissement se fait à chaque sélection d'une cellule dans ladite feuille.
'-------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Feuil1.ProtectContents = True Then
Range("A1") = "Feuille protégée"
Else
Range("A1") = "Feuille non protégée"
End If
End Sub
'-------------------------

MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Bonjour,
Je souhaiterais connaître en permanence l'état de protection d'un feuille, sans aller dans l'onglet "Revision"
Je m'explique, j'aimerais qu'en cellule P1 s'affiche "Protégé" ou "Déprotégé" selon les cas
Est-ce possible ?
Merci
Michel
Je suis sous Excel 2010
Avatar
michir
Merci MichD
J'ai une erreur de débogage lorsque la feuille est en état protégé
Avatar
MichD
Pour protéger la feuille, tu dois utiliser le paramètre UserInterfaceOnly de la méthode Protect. Tu peux lire d'aide d'Excel
sur la méthode.
Ce paramètre lorsqu'il est à "True" permet d'exécuter les macros et modifier le contenu des cellules par macro, et ce, sans
permettre à l'usager d'intervenir directement dans la feuille de calcul.

La procédure Workbook_Open s'exécute seulement à l'ouverture de la macro ou à moins que tu l'exécutes manuellement.
As-tu adapté le nom de la feuille "Feuil1" dans la procédure ?



MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Merci MichD
J'ai une erreur de débogage lorsque la feuille est en état protégé
Avatar
michir
J'ai été voir l'aide.
peux tu me dire plus précisément comment je peux incorporer cette mét hode et ce paramètre dans la procédure VBA ? excuse mon niveau très r éduit en VBA
Merci
Avatar
MichD
J'ai déjà publié le code dans mon premier message. Lorsque tu as terminé d'installer le code, si dans le reste de ton
application, tu dois déprotéger la feuille pour permettre à un usager d'intervenir dans la feuille, si par la suite tu dois
protéger la feuille, tu dois utiliser cette ligne de commande (en adaptant le nom de la feuille)
Worksheets("Feuil1").Protect "MotDePasse", True, True, True, True

Si tu as un problème précis, explique ce qui ne va pas.


MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


J'ai été voir l'aide.
peux tu me dire plus précisément comment je peux incorporer cette méthode et ce paramètre dans la procédure VBA ? excuse mon
niveau très réduit en VBA
Merci
Avatar
michir
Je te joins mon fichier test (macro MichD)pour voir si tu peux m'aider à trouver la solution.

http://www.cijoint.fr/cjlink.php?file=cj201110/cijEyJBCAM.xlsm

J'aimerais que le code puisse servir dans chaque feuille de mon appli (18 f euilles)
Mes feuilles comportent toutes des macros et je suis amené à les prot éger et déprotéger
L'indication de l'état de protection dans une cellule (toujours la même ) est une sécurité appréciable
Merci à toi
Avatar
MichD
Fichier exemple ici : http://cjoint.com/?AJdqGaYDMY8



MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Je te joins mon fichier test (macro MichD)pour voir si tu peux m'aider à trouver la solution.

http://www.cijoint.fr/cjlink.php?file=cj201110/cijEyJBCAM.xlsm

J'aimerais que le code puisse servir dans chaque feuille de mon appli (18 feuilles)
Mes feuilles comportent toutes des macros et je suis amené à les protéger et déprotéger
L'indication de l'état de protection dans une cellule (toujours la même) est une sécurité appréciable
Merci à toi
Avatar
michir
Merci MichD,
Ton fichier fonctionne parfaitement.
Encore une question. si je veux que la macro ne s'applique qu'aux feuilles nommées "Jour 1" à "Jour 15" par exemple comment dois je adapter le cod e ?
Michel
Avatar
MichD
Comme ceci :

'-----------------------------------------
Private Sub Workbook_Open()
'Le "MotDePasse" est optionnel
'Tu peux ajouter un mot de passe
'si tu le désires.

'lorsque le classeur ouvre, il protège toutes les
'feuilles du classeur et inscrit dans la cellule A1
'le statut de protection de la feuille.
Dim Sh As Worksheet
For Each Sh In ThisWorkbook.Worksheets
Select Case Sh.Name
'Tu listes toutes les feuilles que tu désires..
'Tu appliques la même chose à l'autre procédure
Case Is = "Feuil1", "Feuil3", "Feuil5"
With Sh
.Unprotect
.Range("A1") = "Feuille protégée"
.Protect , True, True, True, True
End With
End Select
Next
End Sub
'-----------------------------------------


MichD
------------------------------------------
"michir" a écrit dans le message de groupe de discussion :


Merci MichD,
Ton fichier fonctionne parfaitement.
Encore une question. si je veux que la macro ne s'applique qu'aux feuilles nommées "Jour 1" à "Jour 15" par exemple comment
dois je adapter le code ?
Michel
Avatar
michir
Bonjour,
Je voudrais remercier MichD pour sa dernière proposition. Je n'avais pas eu le temps de tester.Elle fonctionne parfaitement
Michel