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

Protection des feuilles avant de fermer le classeur

7 réponses
Avatar
Caroline L.
Allo à tout le monde !

Voici ma question :
Dans un classeur à plusieurs feuilles, chaque feuille ayant une protection
(protéger la feuille) avec mot de passe, peut-on à l'aide d'une macro
vérifier à la fermeture du fichier si toutes les feuilles du classeur sont
protégées ? Si une ou l'autre ne l'est pas, "forcer" l'utilisateur à
ré-appliquer le mot de passe à chaque feuille.

Merci à l'avance pour votre aide.
Caroline

7 réponses

Avatar
anonymousA
bonjour,

Insertion au passage de l'obligation de proteger le classeur.


Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez proteger ce classeur avant fermeture"
Application.CommandBars.FindControl(ID:‰4).Execute
ThisWorkbook.Unprotect ""
Loop

Err.Clear

For I = 1 To Sheets.Count
If Sheets(I).ProtectContents = False Then
Sheets(I).Activate
Application.CommandBars.FindControl(ID:‰3).Execute
End If
Next


For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next


End Sub





Allo à tout le monde !

Voici ma question :
Dans un classeur à plusieurs feuilles, chaque feuille ayant une protection
(protéger la feuille) avec mot de passe, peut-on à l'aide d'une macro
vérifier à la fermeture du fichier si toutes les feuilles du classeur sont
protégées ? Si une ou l'autre ne l'est pas, "forcer" l'utilisateur à
ré-appliquer le mot de passe à chaque feuille.

Merci à l'avance pour votre aide.
Caroline




Avatar
Caroline L.
Re-bonjour,

Merci pour ton aide.
J'ai insérer la procédure et tout se passe bien lors de mes tests... sauf
que lorsque la fenêtre de Protéger la feuille (où je dois entrer le mot de
passe) est ouverte, il y a l'option OK ou Annuler. Si j'entre le mot de
passe et que je fais OK, tout va bien. Sauf que j'ai appuyé par erreur sur
Annuler et surprise : le classeur se ferme, Excel aussi et la feuille n'est
pas protégé. Qu'est-ce que je peux faire ?

merci.

"anonymousA" a écrit dans le message de news:
4213c8c3$0$2193$
bonjour,

Insertion au passage de l'obligation de proteger le classeur.


Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez proteger ce classeur avant fermeture"
Application.CommandBars.FindControl(ID:‰4).Execute
ThisWorkbook.Unprotect ""
Loop

Err.Clear

For I = 1 To Sheets.Count
If Sheets(I).ProtectContents = False Then
Sheets(I).Activate
Application.CommandBars.FindControl(ID:‰3).Execute
End If
Next


For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next


End Sub





Allo à tout le monde !

Voici ma question :
Dans un classeur à plusieurs feuilles, chaque feuille ayant une
protection


(protéger la feuille) avec mot de passe, peut-on à l'aide d'une macro
vérifier à la fermeture du fichier si toutes les feuilles du classeur
sont


protégées ? Si une ou l'autre ne l'est pas, "forcer" l'utilisateur à
ré-appliquer le mot de passe à chaque feuille.

Merci à l'avance pour votre aide.
Caroline






Avatar
anonymousA
re,

ne vois pas où est ton problème . Je refais la manip que tu m'annonces
et le fichier ne se ferme pas et le programme t'envoie eun message pour
te dire qu'une feuille au moins n'est pas protégée. C'est d'ailleurs
tout l'objet des instructions
For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Donne plus de détails

A+


Re-bonjour,

Merci pour ton aide.
J'ai insérer la procédure et tout se passe bien lors de mes tests... sauf
que lorsque la fenêtre de Protéger la feuille (où je dois entrer le mot de
passe) est ouverte, il y a l'option OK ou Annuler. Si j'entre le mot de
passe et que je fais OK, tout va bien. Sauf que j'ai appuyé par erreur sur
Annuler et surprise : le classeur se ferme, Excel aussi et la feuille n'est
pas protégé. Qu'est-ce que je peux faire ?

merci.

"anonymousA" a écrit dans le message de news:
4213c8c3$0$2193$

bonjour,

Insertion au passage de l'obligation de proteger le classeur.


Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez proteger ce classeur avant fermeture"
Application.CommandBars.FindControl(ID:‰4).Execute
ThisWorkbook.Unprotect ""
Loop

Err.Clear

For I = 1 To Sheets.Count
If Sheets(I).ProtectContents = False Then
Sheets(I).Activate
Application.CommandBars.FindControl(ID:‰3).Execute
End If
Next


For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next


End Sub






Allo à tout le monde !

Voici ma question :
Dans un classeur à plusieurs feuilles, chaque feuille ayant une



protection

(protéger la feuille) avec mot de passe, peut-on à l'aide d'une macro
vérifier à la fermeture du fichier si toutes les feuilles du classeur



sont

protégées ? Si une ou l'autre ne l'est pas, "forcer" l'utilisateur à
ré-appliquer le mot de passe à chaque feuille.

Merci à l'avance pour votre aide.
Caroline











Avatar
Alain CROS
Bonjour.

Il manque une ligne.

For I = 1 To Sheets.Count
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Alain CROS

"anonymousA" a écrit dans le message de news: 421476dd$0$19407$
re,

ne vois pas où est ton problème . Je refais la manip que tu m'annonces
et le fichier ne se ferme pas et le programme t'envoie eun message pour
te dire qu'une feuille au moins n'est pas protégée. C'est d'ailleurs
tout l'objet des instructions
For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Donne plus de détails

A+


Avatar
Caroline L.
Bonjour Alain,
j'ai ajouté la ligne manquante et voilà, tout est résolu : il est maintenant
impossible de sortir du classeur dans protéger toutes les feuilles.
Mais dit-moi donc pour que je comprenne : qu'est-ce que la ligne suivante
fait : Err.Clear

Gros merci à toi de ta collaboration.
Bonne journée.


"Alain CROS" a écrit dans le message de news:

Bonjour.

Il manque une ligne.

For I = 1 To Sheets.Count
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"

Cancel = True
Exit Sub
End If
Next

Alain CROS

"anonymousA" a écrit dans le message de news:
421476dd$0$19407$

re,

ne vois pas où est ton problème . Je refais la manip que tu m'annonces
et le fichier ne se ferme pas et le programme t'envoie eun message pour
te dire qu'une feuille au moins n'est pas protégée. C'est d'ailleurs
tout l'objet des instructions
For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Donne plus de détails

A+






Avatar
Caroline L.
Re-bonjour anonymousA,
Alain Cros a souligné qu'il manquait une ligne à la procédure et voilà tout
fonctionne. C'est que maintenant il est IMPOSSIBLE de fermer le classeur
tant et aussi longtemps qu'une feuille n'est pas protégée.

Gros Gros Merci à toi anonymousA qui m'a aidé avec la procédure... ça fait
longtemps que je cherche une procédure comme celle que tu m'as fourni.

Merci encore. Bonne journée :o)



"anonymousA" a écrit dans le message de news:
421476dd$0$19407$
re,

ne vois pas où est ton problème . Je refais la manip que tu m'annonces
et le fichier ne se ferme pas et le programme t'envoie eun message pour
te dire qu'une feuille au moins n'est pas protégée. C'est d'ailleurs
tout l'objet des instructions
For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Donne plus de détails

A+


Re-bonjour,

Merci pour ton aide.
J'ai insérer la procédure et tout se passe bien lors de mes tests...
sauf


que lorsque la fenêtre de Protéger la feuille (où je dois entrer le mot
de


passe) est ouverte, il y a l'option OK ou Annuler. Si j'entre le mot de
passe et que je fais OK, tout va bien. Sauf que j'ai appuyé par erreur
sur


Annuler et surprise : le classeur se ferme, Excel aussi et la feuille
n'est


pas protégé. Qu'est-ce que je peux faire ?

merci.

"anonymousA" a écrit dans le message de news:
4213c8c3$0$2193$

bonjour,

Insertion au passage de l'obligation de proteger le classeur.


Private Sub Workbook_BeforeClose(Cancel As Boolean)

On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez proteger ce classeur avant fermeture"
Application.CommandBars.FindControl(ID:‰4).Execute
ThisWorkbook.Unprotect ""
Loop

Err.Clear

For I = 1 To Sheets.Count
If Sheets(I).ProtectContents = False Then
Sheets(I).Activate
Application.CommandBars.FindControl(ID:‰3).Execute
End If
Next


For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next


End Sub






Allo à tout le monde !

Voici ma question :
Dans un classeur à plusieurs feuilles, chaque feuille ayant une



protection

(protéger la feuille) avec mot de passe, peut-on à l'aide d'une macro
vérifier à la fermeture du fichier si toutes les feuilles du classeur



sont

protégées ? Si une ou l'autre ne l'est pas, "forcer" l'utilisateur à
ré-appliquer le mot de passe à chaque feuille.

Merci à l'avance pour votre aide.
Caroline













Avatar
anonymousA
re,

remarque judicieuse comme d'hab d'ailleurs d'Alain. ce que fait
err.clear c'est rétablir le gestionnaire d'erreurs à 0 car en effet,
imaginons que la 1ere feuille soit protégée, dans ce cas err.number est
<>0 et le passage sur le If ne se déclenche pas. Donc par la suite si
l'une des feuuilles au moins a un mdp nul err.number devrait etre égal à
0 mais ne le peut pas puisqu'il n'a pas été réinitialisé, en
cons"quence, le passag dans le if ne se fait jamais et le Cancel =true
ne peut sexécuter.


A+

Bonjour Alain,
j'ai ajouté la ligne manquante et voilà, tout est résolu : il est maintenant
impossible de sortir du classeur dans protéger toutes les feuilles.
Mais dit-moi donc pour que je comprenne : qu'est-ce que la ligne suivante
fait : Err.Clear

Gros merci à toi de ta collaboration.
Bonne journée.


"Alain CROS" a écrit dans le message de news:


Bonjour.

Il manque une ligne.

For I = 1 To Sheets.Count
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre


elles pose un problème"

Cancel = True
Exit Sub
End If
Next

Alain CROS

"anonymousA" a écrit dans le message de news:


421476dd$0$19407$

re,

ne vois pas où est ton problème . Je refais la manip que tu m'annonces
et le fichier ne se ferme pas et le programme t'envoie eun message pour
te dire qu'une feuille au moins n'est pas protégée. C'est d'ailleurs
tout l'objet des instructions
For I = 1 To Sheets.Count
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez proteger les feuilles. Au moins l'une d'entre
elles pose un problème"
Cancel = True
Exit Sub
End If
Next

Donne plus de détails

A+