OVH Cloud OVH Cloud

Macro sans effet si classeur protégé

7 réponses
Avatar
Caroline L.
Bonjour,

est-il possible de rendre "inactive" une macro tant que la protection du
classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton dans le
menu du haut. Elle serait inactive si le classeur est protégé. Inactive dans
le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du classeur, là à
ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin (elle ne
se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on appuie
dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline

7 réponses

Avatar
anonymousA
bonjour,

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du classeur, tu
n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la protection du
classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton dans le
menu du haut. Elle serait inactive si le classeur est protégé. Inactive dans
le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du classeur, là à
ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin (elle ne
se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on appuie
dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline





Avatar
Caroline L.
Bonjour anonymousA,

C'est parfait ! tout fonctionne.

Merci et bonne journée !

Caroline


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

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du classeur,
tu

n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la protection du
classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton
dans le


menu du haut. Elle serait inactive si le classeur est protégé. Inactive
dans


le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du classeur,
là à


ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin
(elle ne


se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on
appuie


dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline







Avatar
Caroline L.
Re-bonjour anonymousA,

comment insérer un petit message juste pour dire à l'usager pourquoi la
macro s'arrête ici, genre :

If ActiveWorkbook.ProtectStructure = True Then Msgbox "Veuillez enlever la
protection du classeur" and
Exit Sub
'ici mettre ta macro normale

merci

Caroline


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

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du classeur,
tu

n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la protection du
classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton
dans le


menu du haut. Elle serait inactive si le classeur est protégé. Inactive
dans


le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du classeur,
là à


ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin
(elle ne


se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on
appuie


dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline







Avatar
anonymousA
re,

If ActiveWorkbook.ProtectStructure = True Then
Msgbox "Veuillez enlever la protection du classeur"
Exit Sub
else
'ici mettre ta macro normale
end if

ou

Sub mettre_cellule_en_gras

If ActiveWorkbook.ProtectStructure = True Then Goto Fin
'ici mettre ta macro normale

exit sub 'ne pas oublier le exit sub avant Fin: , car sinon l'utilisateur
aurait droit au message "Veuillez enlever la protection du classeur" dans
tous les cas

Fin:
Msgbox "Veuillez enlever la protection du classeur"

End sub

Perso, je préfère la 1ere solution. J'aime pas trop les goto

A+


Re-bonjour anonymousA,

comment insérer un petit message juste pour dire à l'usager pourquoi la
macro s'arrête ici, genre :

If ActiveWorkbook.ProtectStructure = True Then Msgbox "Veuillez enlever la
protection du classeur" and
Exit Sub
'ici mettre ta macro normale

merci

Caroline


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

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du classeur,
tu

n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la protection du
classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton
dans le


menu du haut. Elle serait inactive si le classeur est protégé. Inactive
dans


le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du classeur,
là à


ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin
(elle ne


se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on
appuie


dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline












Avatar
Caroline L.
Re,

merci, c'est parfait... j'ai opté pour la 1ère solution.

Merci beaucoup !

Puis-je me permettre une autre petite question qui me vient concernant la
protection (et tu m'avais beaucoup aidé sur une macro) ?
J'ai une feuille qui se nomme Gestion et elle est masquée en tout temps.
Avec la macro qui suit, à la fermeture du classeur, la macro permet de
vérifier s'il y a des feuilles qui ne sont pas protégées et si le classeur
n'est pas protégé. Tant qu'il y a des feuilles non protégées et que le
classeur n'est pas protégé (avec mot de passe dans tous les cas), excel
envoie constament des messages.
Voici la petite modification que je souhaiterais apportée : ne pas protégé
la feuille Gestion.
Voici la macro en question :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

'remet la protection sur toutes les feuilles et protection du classeur

Application.EnableCancelKey = xlDisabled
On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez protéger 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
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez protéger les feuilles. Au moins l'une d'entre-elles
pose un problème"
Cancel = True
Exit Sub
End If
Next
Application.EnableCancelKey = xlInterrupt

MsgBox "Veuillez patienter. Le programme enregistre présentement les
modifications apportées. Il est possible que cette opération prenne quelques
secondes.", vbOKOnly, "Au revoir"

ActiveWorkbook.Save

End Sub


Merci.
Caroline







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

If ActiveWorkbook.ProtectStructure = True Then
Msgbox "Veuillez enlever la protection du classeur"
Exit Sub
else
'ici mettre ta macro normale
end if

ou

Sub mettre_cellule_en_gras

If ActiveWorkbook.ProtectStructure = True Then Goto Fin
'ici mettre ta macro normale

exit sub 'ne pas oublier le exit sub avant Fin: , car sinon l'utilisateur
aurait droit au message "Veuillez enlever la protection du classeur" dans
tous les cas

Fin:
Msgbox "Veuillez enlever la protection du classeur"

End sub

Perso, je préfère la 1ere solution. J'aime pas trop les goto

A+


Re-bonjour anonymousA,

comment insérer un petit message juste pour dire à l'usager pourquoi la
macro s'arrête ici, genre :

If ActiveWorkbook.ProtectStructure = True Then Msgbox "Veuillez enlever
la


protection du classeur" and
Exit Sub
'ici mettre ta macro normale

merci

Caroline


"anonymousA" a écrit dans le
message


de news:
bonjour,

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du
classeur,



tu
n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la
protection du




classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton
dans le


menu du haut. Elle serait inactive si le classeur est protégé.
Inactive




dans
le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du
classeur,




là à
ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin
(elle ne


se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on
appuie


dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline














Avatar
anonymousA
re,

remplacer les 2 groupes d'instructions concernant la vérif de protection des
feuilles par les 2 suivants.
Ce n'est pas la solution la + élégante, mais ca marche.

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


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

A+


Re,

merci, c'est parfait... j'ai opté pour la 1ère solution.

Merci beaucoup !

Puis-je me permettre une autre petite question qui me vient concernant la
protection (et tu m'avais beaucoup aidé sur une macro) ?
J'ai une feuille qui se nomme Gestion et elle est masquée en tout temps.
Avec la macro qui suit, à la fermeture du classeur, la macro permet de
vérifier s'il y a des feuilles qui ne sont pas protégées et si le classeur
n'est pas protégé. Tant qu'il y a des feuilles non protégées et que le
classeur n'est pas protégé (avec mot de passe dans tous les cas), excel
envoie constament des messages.
Voici la petite modification que je souhaiterais apportée : ne pas protégé
la feuille Gestion.
Voici la macro en question :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

'remet la protection sur toutes les feuilles et protection du classeur

Application.EnableCancelKey = xlDisabled
On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez protéger 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
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez protéger les feuilles. Au moins l'une d'entre-elles
pose un problème"
Cancel = True
Exit Sub
End If
Next
Application.EnableCancelKey = xlInterrupt

MsgBox "Veuillez patienter. Le programme enregistre présentement les
modifications apportées. Il est possible que cette opération prenne quelques
secondes.", vbOKOnly, "Au revoir"

ActiveWorkbook.Save

End Sub


Merci.
Caroline







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

If ActiveWorkbook.ProtectStructure = True Then
Msgbox "Veuillez enlever la protection du classeur"
Exit Sub
else
'ici mettre ta macro normale
end if

ou

Sub mettre_cellule_en_gras

If ActiveWorkbook.ProtectStructure = True Then Goto Fin
'ici mettre ta macro normale

exit sub 'ne pas oublier le exit sub avant Fin: , car sinon l'utilisateur
aurait droit au message "Veuillez enlever la protection du classeur" dans
tous les cas

Fin:
Msgbox "Veuillez enlever la protection du classeur"

End sub

Perso, je préfère la 1ere solution. J'aime pas trop les goto

A+


Re-bonjour anonymousA,

comment insérer un petit message juste pour dire à l'usager pourquoi la
macro s'arrête ici, genre :

If ActiveWorkbook.ProtectStructure = True Then Msgbox "Veuillez enlever
la


protection du classeur" and
Exit Sub
'ici mettre ta macro normale

merci

Caroline


"anonymousA" a écrit dans le
message


de news:
bonjour,

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du
classeur,



tu
n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la
protection du




classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son bouton
dans le


menu du haut. Elle serait inactive si le classeur est protégé.
Inactive




dans
le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du
classeur,




là à
ce moment la Sub mettre_cellule_en_gras pour être utilisé Au Besoin
(elle ne


se déclenche pas automatiquement si on entre le mot de passe de la
protection classeur - elle est seulement maintenant exécutable si on
appuie


dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline



















Avatar
Caroline L.
Bon matin anonymousA,

tu as donc bel et bien reçu mon post, super !
Pour ce qui suit, je ne suis pas une pro comme toi, alors élégance ou pas,
comme tu dis, ça marche.

Merci pour ton aide et bonne journée !
Caroline


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

remplacer les 2 groupes d'instructions concernant la vérif de protection
des

feuilles par les 2 suivants.
Ce n'est pas la solution la + élégante, mais ca marche.

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


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

A+


Re,

merci, c'est parfait... j'ai opté pour la 1ère solution.

Merci beaucoup !

Puis-je me permettre une autre petite question qui me vient concernant
la


protection (et tu m'avais beaucoup aidé sur une macro) ?
J'ai une feuille qui se nomme Gestion et elle est masquée en tout temps.
Avec la macro qui suit, à la fermeture du classeur, la macro permet de
vérifier s'il y a des feuilles qui ne sont pas protégées et si le
classeur


n'est pas protégé. Tant qu'il y a des feuilles non protégées et que le
classeur n'est pas protégé (avec mot de passe dans tous les cas), excel
envoie constament des messages.
Voici la petite modification que je souhaiterais apportée : ne pas
protégé


la feuille Gestion.
Voici la macro en question :


Private Sub Workbook_BeforeClose(Cancel As Boolean)

'remet la protection sur toutes les feuilles et protection du classeur

Application.EnableCancelKey = xlDisabled
On Error Resume Next

ThisWorkbook.Unprotect ""

Do While ThisWorkbook.ProtectStructure = False
MsgBox "Vous devez protéger 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
Err.Clear
Sheets(I).Activate
ActiveSheet.Unprotect ""
If Err.Number = 0 Then
MsgBox "Vous devez protéger les feuilles. Au moins l'une
d'entre-elles


pose un problème"
Cancel = True
Exit Sub
End If
Next
Application.EnableCancelKey = xlInterrupt

MsgBox "Veuillez patienter. Le programme enregistre présentement les
modifications apportées. Il est possible que cette opération prenne
quelques


secondes.", vbOKOnly, "Au revoir"

ActiveWorkbook.Save

End Sub


Merci.
Caroline







"anonymousA" a écrit dans le
message


de news:
re,

If ActiveWorkbook.ProtectStructure = True Then
Msgbox "Veuillez enlever la protection du classeur"
Exit Sub
else
'ici mettre ta macro normale
end if

ou

Sub mettre_cellule_en_gras

If ActiveWorkbook.ProtectStructure = True Then Goto Fin
'ici mettre ta macro normale

exit sub 'ne pas oublier le exit sub avant Fin: , car sinon
l'utilisateur



aurait droit au message "Veuillez enlever la protection du classeur"
dans



tous les cas

Fin:
Msgbox "Veuillez enlever la protection du classeur"

End sub

Perso, je préfère la 1ere solution. J'aime pas trop les goto

A+


Re-bonjour anonymousA,

comment insérer un petit message juste pour dire à l'usager pourquoi
la




macro s'arrête ici, genre :

If ActiveWorkbook.ProtectStructure = True Then Msgbox "Veuillez
enlever




la
protection du classeur" and
Exit Sub
'ici mettre ta macro normale

merci

Caroline


"anonymousA" a écrit dans le
message


de news:
bonjour,

mettre au début de macro de bouton

if ActiveWorkbook.ProtectStructure = True then exit sub
'ici mettre ta macro normale

il faut bien sur que dans ton choix préalable de protection du
classeur,



tu
n'aies pas décoché Structure.

A+


Bonjour,

est-il possible de rendre "inactive" une macro tant que la
protection du




classeur est activée.
Exemple, j'ai la macro Sub mettre_cellule_en_gras. Elle a son
bouton






dans le
menu du haut. Elle serait inactive si le classeur est protégé.
Inactive




dans
le sens que si j'appuie sur son bouton, il ne se passe rien.
Lorsque j'entre le mot de passe pour enlever la protection du
classeur,




là à
ce moment la Sub mettre_cellule_en_gras pour être utilisé Au
Besoin






(elle ne
se déclenche pas automatiquement si on entre le mot de passe de
la






protection classeur - elle est seulement maintenant exécutable
si on






appuie
dessus).
Si cela est possible, pourriez-vous m'indiquer comment faire ?

Remerciements en attente d'une réponse et Bonne journée

Caroline