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

problème protection de feuille

5 réponses
Avatar
Maxime
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger toutes les feuilles
en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de mettre à jour mes
onglets. Mais comme j'ai une protection, excel me lance un message d'erreur
comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis qu'il fallait
enlever la protection, insérer les données, et remettre la protection.
Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la classe Worksheet a
échoué'. Je ne vois pas d'où ça vient car si je teste les deux fonctions
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu dérouté.

Si quelqu'un a une idée sur le sujet, je suis preneur

Merci

5 réponses

Avatar
Bonjour,

Il faudrait essayer avec cela, j'utilise les deux dans le
meme code et cela fonctionne :

Worksheets("Accueil").Unprotect

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

a+
Sylvain
-----Message d'origine-----
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger
toutes les feuilles

en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True,
Contents:=True,

Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de
mettre à jour mes

onglets. Mais comme j'ai une protection, excel me lance
un message d'erreur

comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis
qu'il fallait

enlever la protection, insérer les données, et remettre
la protection.

Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la
classe Worksheet a

échoué'. Je ne vois pas d'où ça vient car si je teste
les deux fonctions

Sheets("Accueil").Protect DrawingObjects:=True,
Contents:=True,

Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu
dérouté.


Si quelqu'un a une idée sur le sujet, je suis preneur

Merci





.



Avatar
Maxime
en fait ça marche à la première itération à condition que la feuuille ne
soit pas protégée au départ.
Mais dès que le feuille protégée la commande Worksheets("Accueil").Unprotect
me génère une erreur. Je n'arrive pas comprendre

Y a t il un moyen de connaitre le statut de la feuille (protégée ou non)?


a écrit dans le message de
news:055101c39ef1$80ffa390$
Bonjour,

Il faudrait essayer avec cela, j'utilise les deux dans le
meme code et cela fonctionne :

Worksheets("Accueil").Unprotect

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

a+
Sylvain
-----Message d'origine-----
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger
toutes les feuilles

en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True,
Contents:=True,

Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de
mettre à jour mes

onglets. Mais comme j'ai une protection, excel me lance
un message d'erreur

comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis
qu'il fallait

enlever la protection, insérer les données, et remettre
la protection.

Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la
classe Worksheet a

échoué'. Je ne vois pas d'où ça vient car si je teste
les deux fonctions

Sheets("Accueil").Protect DrawingObjects:=True,
Contents:=True,

Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu
dérouté.


Si quelqu'un a une idée sur le sujet, je suis preneur

Merci





.



Avatar
Pascal
'Interdire une saisie en dehors de cellules autorisées
'sans protéger la feuille ou le classeur

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
'Laurent Mortézai, mpfe

If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "Vous n'avez pas la possibilité d'entrer des données sur une
cellule contenant des formules!!!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

et ensuite:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
PasTouche Target, Range("D6:F36,K6:L36,R6:R36,C8")
End Sub


Normalement cela devrait t'aider.Le Range("D6:F36,K6:L36,R6:R36,C8")
réprésente la plage de cellules autorisées pour une éventuelle saisie de
données

@+




"Maxime" a écrit dans le message de news:
bnr61r$irb$
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger toutes les
feuilles

en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de mettre à jour mes
onglets. Mais comme j'ai une protection, excel me lance un message
d'erreur

comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis qu'il fallait
enlever la protection, insérer les données, et remettre la protection.
Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la classe Worksheet a
échoué'. Je ne vois pas d'où ça vient car si je teste les deux fonctions
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu dérouté.

Si quelqu'un a une idée sur le sujet, je suis preneur

Merci







Avatar
Maxime
En fait j'ai trouvé d'où venait le problème.
Avant d'utiliser Sheets("Accueil").Unprotect, où la commande qui protège, en
sélectionnant une cellule de la feuille, je n'ai plus aucun problème!!!!
donc juste faire
Cells(1,1).select
Sheets("Accueil").Unprotect

et idem pour protéger

en tout cas merci de votre aide


"Pascal" a écrit dans le message de
news:
'Interdire une saisie en dehors de cellules autorisées
'sans protéger la feuille ou le classeur

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
'Laurent Mortézai, mpfe

If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "Vous n'avez pas la possibilité d'entrer des données sur une
cellule contenant des formules!!!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

et ensuite:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)

PasTouche Target, Range("D6:F36,K6:L36,R6:R36,C8")
End Sub


Normalement cela devrait t'aider.Le Range("D6:F36,K6:L36,R6:R36,C8")
réprésente la plage de cellules autorisées pour une éventuelle saisie de
données

@+




"Maxime" a écrit dans le message de news:
bnr61r$irb$
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger toutes les
feuilles

en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de mettre à jour mes
onglets. Mais comme j'ai une protection, excel me lance un message
d'erreur

comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis qu'il fallait
enlever la protection, insérer les données, et remettre la protection.
Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la classe Worksheet
a


échoué'. Je ne vois pas d'où ça vient car si je teste les deux
fonctions


Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu dérouté.

Si quelqu'un a une idée sur le sujet, je suis preneur

Merci











Avatar
Philippe.R
Bonjour Maxime,

Bien que ton problème soit résolu, tu peux noter en outre que l'erreur générée par ce code :
Worksheets("Accueil").Unprotect

ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

vient du fait que la feuille protégée à nouveau n'est pas nécessairement la bonne puisque c'est celle
active au moment de l'execution ; avec cette ligne modifiée, ça devrait le faire :

Worksheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"Maxime" a écrit dans le message de news:bnrb9r$mfg$
En fait j'ai trouvé d'où venait le problème.
Avant d'utiliser Sheets("Accueil").Unprotect, où la commande qui protège, en
sélectionnant une cellule de la feuille, je n'ai plus aucun problème!!!!
donc juste faire
Cells(1,1).select
Sheets("Accueil").Unprotect

et idem pour protéger

en tout cas merci de votre aide


"Pascal" a écrit dans le message de
news:
'Interdire une saisie en dehors de cellules autorisées
'sans protéger la feuille ou le classeur

Sub PasTouche(LaCellule As Range, PlageAutorisée As Range)
'Laurent Mortézai, mpfe

If Intersect(LaCellule, PlageAutorisée) Is Nothing Then
MsgBox "Vous n'avez pas la possibilité d'entrer des données sur une
cellule contenant des formules!!!"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

et ensuite:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Range)

PasTouche Target, Range("D6:F36,K6:L36,R6:R36,C8")
End Sub


Normalement cela devrait t'aider.Le Range("D6:F36,K6:L36,R6:R36,C8")
réprésente la plage de cellules autorisées pour une éventuelle saisie de
données

@+




"Maxime" a écrit dans le message de news:
bnr61r$irb$
bonjour,

j'ai un petit sousci avec la protection des feuilles.
En fait dans ma macro Workbook_Open(), je dois protéger toutes les
feuilles

en écriture, donc j'utilise dans cette macro la fonction
Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
qui marche sur excel 97.
Par contre j'ai un formulaire qui doit me permettre de mettre à jour mes
onglets. Mais comme j'ai une protection, excel me lance un message
d'erreur

comme ma feuille est protégé.

donc dans le traitement de mon formulaire, je me suis dis qu'il fallait
enlever la protection, insérer les données, et remettre la protection.
Or quand j'utilise
Sheets("Accueil").Unprotect
j'ai un message qui me dit 'La méthode Unprotect de la classe Worksheet
a


échoué'. Je ne vois pas d'où ça vient car si je teste les deux
fonctions


Sheets("Accueil").Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
et
Sheets("Accueil").Unprotect
unitairement, ça a l'air de marcher. Donc je suis un peu dérouté.

Si quelqu'un a une idée sur le sujet, je suis preneur

Merci