Bonjour,
Est il possible de faire en sorte de demander un mot de passe si on
essai de supprimer une feuille, mais la feuille doit être visible et
non protégée
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur. -Dans un macro, demander la feuille à supprimer et le mot de passe.
JB On 31 mar, 15:54, Michel (pen ar bed) wrote:
Bonjour, Est il possible de faire en sorte de demander un mot de passe si on essai de supprimer une feuille, mais la feuille doit être visible et non protégée
Merci des pistes.
M.
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille.
-Protéger le classeur.
-Dans un macro, demander la feuille à supprimer et le mot de passe.
JB
On 31 mar, 15:54, Michel (pen ar bed) <Mic...@mail.net> wrote:
Bonjour,
Est il possible de faire en sorte de demander un mot de passe si on
essai de supprimer une feuille, mais la feuille doit être visible et
non protégée
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur. -Dans un macro, demander la feuille à supprimer et le mot de passe.
JB On 31 mar, 15:54, Michel (pen ar bed) wrote:
Bonjour, Est il possible de faire en sorte de demander un mot de passe si on essai de supprimer une feuille, mais la feuille doit être visible et non protégée
Merci des pistes.
M.
Michel (pen ar bed)
JB a couché sur son écran :
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une feuille (protégée ou pas) je vient de faire l'essai même une page protégée est "deletable" par la clic droit sur l'onglet :/ M.
JB a couché sur son écran :
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille.
-Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une
feuille (protégée ou pas)
je vient de faire l'essai même une page protégée est "deletable" par la
clic droit sur l'onglet
:/
M.
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une feuille (protégée ou pas) je vient de faire l'essai même une page protégée est "deletable" par la clic droit sur l'onglet :/ M.
JB
J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/ Protéger le classeur)
JB On 31 mar, 22:17, Michel (pen ar bed) wrote:
JB a couché sur son écran :
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une feuille (protégée ou pas) je vient de faire l'essai même une page protégée est "deletable" par la clic droit sur l'onglet :/ M.
J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/
Protéger le classeur)
JB
On 31 mar, 22:17, Michel (pen ar bed) <Mic...@mail.net> wrote:
JB a couché sur son écran :
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille.
-Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une
feuille (protégée ou pas)
je vient de faire l'essai même une page protégée est "deletable" par la
clic droit sur l'onglet
:/
M.
J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/ Protéger le classeur)
JB On 31 mar, 22:17, Michel (pen ar bed) wrote:
JB a couché sur son écran :
Bonsoir,
Il n'y a pas d'événement sur la suppression de feuille. -Protéger le classeur.
Le but était d'empêcher de faire un delete (par clic droit) sur une feuille (protégée ou pas) je vient de faire l'essai même une page protégée est "deletable" par la clic droit sur l'onglet :/ M.
Michel (pen ar bed)
JB avait écrit le 31/03/2008 :
J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/ Protéger le classeur)
oui j'ai bien lu, mais si je protège le classeur je ne peut plus faire
mes imports automatique avec création de feuille
JB avait écrit le 31/03/2008 :
J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/
Protéger le classeur)
oui j'ai bien lu, mais si je protège le classeur je ne peut plus faire
Il faut enlever la protection du classeur (par VBA) pendant l'import et la remettre après .
JB On 31 mar, 22:42, Michel (pen ar bed) wrote:
JB avait écrit le 31/03/2008 :> J'ai écrit protéger le CLASSEUR et non pas feuille (Outils/Protection/
Protéger le classeur)
oui j'ai bien lu, mais si je protège le classeur je ne peut plus faire mes imports automatique avec création de feuille
OK je vais essayer (demain)
merci et Bonsoir M.
PMO
Bonjour,
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
Bonjour,
Voici une piste qui ne prend en considération que l'item
"Supprimer" du menu contextuel apparaissant à la suite
d'un clic droit sur l'onglet.
Je suppose que vous avez déjà modifié la WorkSheet Menu Bar
pour désactiver Edition/Supprimer une feuille.
CELA FAIT
1) désactivation de l'item "Supprimer"
2) création d'un nouvel item "Supprimer avec autorisation"
Quand on clique dessus une InputBox apparaît et demande
le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS
1) Dans un module standard
'*************
'#### Constante à adapter selon password ####
Const MOT_DE_PASSE As String = "123456"
'############################################
'____________________
Sub DesactiveSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
Dim bool As Boolean
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = False
If ctl.Caption = "Supprimer avec autorisation" Then bool = True
Next ctl
If Not bool Then
Set ctl = CommandBars("Ply").Controls.Add _
(Type:=msoControlButton, before:=1)
ctl.Caption = "Supprimer avec autorisation"
ctl.OnAction = "DeleteAvecMotPasse"
End If
End Sub
'____________________
Sub RetablitSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
On Error Resume Next
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = True
If ctl.Caption = _
"Supprimer avec autorisation" Then ctl.Delete
Next ctl
End Sub
'____________________
Sub DeleteAvecMotPasse(Optional dummy As Byte)
Dim retour$
retour$ = InputBox( _
prompt:="Indiquez le mot de passe pour supprimer la feuille", _
Title:="Supprimer avec autorisation")
If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete
End Sub
'*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles)
'*************
Private Sub Worksheet_Activate()
Call DesactiveSupprimer
End Sub
Private Sub Worksheet_Deactivate()
Call RetablitSupprimer
End Sub
'*************
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
MichDenis
Et la commande du menu édition "Supprimer une feuille" faudrait penser à t'en occuper !
Pour ce qui est de ta procédure "DeleteAvecMotPasse", tu as oublié de prévoir que si la commande est appelé et que la feuille active est la seule feuille visible du classeur ta procédure va planter... un classeur ne tolère pas d'être sans feuille visible (au moins une), il faudrait ajouter quelque chose comme :
On Error Resume Next ActiveSheet.Delete On Error GoTo 0
P.S. Perso, je ne changerais pas le libellé de la commande dans les menus mais seulement modifierais la propriété OnAction du ID comme tu l'as fait. Sait-on jamais, cela pourrait être compatible avec Excel 2007 !
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
Bonjour,
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
Et la commande du menu édition "Supprimer une feuille"
faudrait penser à t'en occuper !
Pour ce qui est de ta procédure "DeleteAvecMotPasse", tu as oublié
de prévoir que si la commande est appelé et que la feuille active est
la seule feuille visible du classeur ta procédure va planter... un classeur
ne tolère pas d'être sans feuille visible (au moins une), il faudrait ajouter
quelque chose comme :
On Error Resume Next
ActiveSheet.Delete
On Error GoTo 0
P.S. Perso, je ne changerais pas le libellé de la commande
dans les menus mais seulement modifierais la propriété
OnAction du ID comme tu l'as fait. Sait-on jamais, cela
pourrait être compatible avec Excel 2007 !
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
D48A9602-89F2-49E1-A31D-7D111D5098DB@microsoft.com...
Bonjour,
Voici une piste qui ne prend en considération que l'item
"Supprimer" du menu contextuel apparaissant à la suite
d'un clic droit sur l'onglet.
Je suppose que vous avez déjà modifié la WorkSheet Menu Bar
pour désactiver Edition/Supprimer une feuille.
CELA FAIT
1) désactivation de l'item "Supprimer"
2) création d'un nouvel item "Supprimer avec autorisation"
Quand on clique dessus une InputBox apparaît et demande
le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS
1) Dans un module standard
'*************
'#### Constante à adapter selon password ####
Const MOT_DE_PASSE As String = "123456"
'############################################
'____________________
Sub DesactiveSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
Dim bool As Boolean
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = False
If ctl.Caption = "Supprimer avec autorisation" Then bool = True
Next ctl
If Not bool Then
Set ctl = CommandBars("Ply").Controls.Add _
(Type:=msoControlButton, before:=1)
ctl.Caption = "Supprimer avec autorisation"
ctl.OnAction = "DeleteAvecMotPasse"
End If
End Sub
'____________________
Sub RetablitSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
On Error Resume Next
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = True
If ctl.Caption = _
"Supprimer avec autorisation" Then ctl.Delete
Next ctl
End Sub
'____________________
Sub DeleteAvecMotPasse(Optional dummy As Byte)
Dim retour$
retour$ = InputBox( _
prompt:="Indiquez le mot de passe pour supprimer la feuille", _
Title:="Supprimer avec autorisation")
If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete
End Sub
'*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles)
'*************
Private Sub Worksheet_Activate()
Call DesactiveSupprimer
End Sub
Private Sub Worksheet_Deactivate()
Call RetablitSupprimer
End Sub
'*************
Et la commande du menu édition "Supprimer une feuille" faudrait penser à t'en occuper !
Pour ce qui est de ta procédure "DeleteAvecMotPasse", tu as oublié de prévoir que si la commande est appelé et que la feuille active est la seule feuille visible du classeur ta procédure va planter... un classeur ne tolère pas d'être sans feuille visible (au moins une), il faudrait ajouter quelque chose comme :
On Error Resume Next ActiveSheet.Delete On Error GoTo 0
P.S. Perso, je ne changerais pas le libellé de la commande dans les menus mais seulement modifierais la propriété OnAction du ID comme tu l'as fait. Sait-on jamais, cela pourrait être compatible avec Excel 2007 !
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
Bonjour,
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
MichDenis
Tant qu'à faire,
| For Each ctl In CommandBars("Ply").Controls | If ctl.ID = 847 Then ctl.Enabled = False | If ctl.Caption = "Supprimer avec autorisation" Then bool = True | Next ctl
Au lieu d'utiliser ce qui précède, tu devrais plutôt faire appel à la commande suivante en adaptant les 2 ID correspondante du menu. Sait-on jamais, l'individu pourrait avoir un interface personnalisé et ces commandes pourraient se retrouver ailleurs. Dans un tel cas, ta procédure serait inefficace.
For Each cbar In Application.CommandBars.FindControls(ID:=NuméroIDàDéterminer) cbar.OnAction = "NouveauComment" Next
Enfin, ce que tu suggères est de loin supérieur à une absence de suggestion !!!
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
Bonjour,
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
Tant qu'à faire,
| For Each ctl In CommandBars("Ply").Controls
| If ctl.ID = 847 Then ctl.Enabled = False
| If ctl.Caption = "Supprimer avec autorisation" Then bool = True
| Next ctl
Au lieu d'utiliser ce qui précède, tu devrais plutôt faire appel à la commande
suivante en adaptant les 2 ID correspondante du menu. Sait-on jamais,
l'individu pourrait avoir un interface personnalisé et ces commandes pourraient
se retrouver ailleurs. Dans un tel cas, ta procédure serait inefficace.
For Each cbar In Application.CommandBars.FindControls(ID:=NuméroIDàDéterminer)
cbar.OnAction = "NouveauComment"
Next
Enfin, ce que tu suggères est de loin supérieur à une absence de suggestion !!!
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
D48A9602-89F2-49E1-A31D-7D111D5098DB@microsoft.com...
Bonjour,
Voici une piste qui ne prend en considération que l'item
"Supprimer" du menu contextuel apparaissant à la suite
d'un clic droit sur l'onglet.
Je suppose que vous avez déjà modifié la WorkSheet Menu Bar
pour désactiver Edition/Supprimer une feuille.
CELA FAIT
1) désactivation de l'item "Supprimer"
2) création d'un nouvel item "Supprimer avec autorisation"
Quand on clique dessus une InputBox apparaît et demande
le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS
1) Dans un module standard
'*************
'#### Constante à adapter selon password ####
Const MOT_DE_PASSE As String = "123456"
'############################################
'____________________
Sub DesactiveSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
Dim bool As Boolean
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = False
If ctl.Caption = "Supprimer avec autorisation" Then bool = True
Next ctl
If Not bool Then
Set ctl = CommandBars("Ply").Controls.Add _
(Type:=msoControlButton, before:=1)
ctl.Caption = "Supprimer avec autorisation"
ctl.OnAction = "DeleteAvecMotPasse"
End If
End Sub
'____________________
Sub RetablitSupprimer(Optional dummy As Byte)
Dim ctl As CommandBarControl
On Error Resume Next
For Each ctl In CommandBars("Ply").Controls
If ctl.ID = 847 Then ctl.Enabled = True
If ctl.Caption = _
"Supprimer avec autorisation" Then ctl.Delete
Next ctl
End Sub
'____________________
Sub DeleteAvecMotPasse(Optional dummy As Byte)
Dim retour$
retour$ = InputBox( _
prompt:="Indiquez le mot de passe pour supprimer la feuille", _
Title:="Supprimer avec autorisation")
If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete
End Sub
'*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles)
'*************
Private Sub Worksheet_Activate()
Call DesactiveSupprimer
End Sub
Private Sub Worksheet_Deactivate()
Call RetablitSupprimer
End Sub
'*************
| For Each ctl In CommandBars("Ply").Controls | If ctl.ID = 847 Then ctl.Enabled = False | If ctl.Caption = "Supprimer avec autorisation" Then bool = True | Next ctl
Au lieu d'utiliser ce qui précède, tu devrais plutôt faire appel à la commande suivante en adaptant les 2 ID correspondante du menu. Sait-on jamais, l'individu pourrait avoir un interface personnalisé et ces commandes pourraient se retrouver ailleurs. Dans un tel cas, ta procédure serait inefficace.
For Each cbar In Application.CommandBars.FindControls(ID:=NuméroIDàDéterminer) cbar.OnAction = "NouveauComment" Next
Enfin, ce que tu suggères est de loin supérieur à une absence de suggestion !!!
"PMO" <patrickPOINTmorangeAROBASElapostePOINTnet> a écrit dans le message de news:
Bonjour,
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
CELA FAIT 1) désactivation de l'item "Supprimer" 2) création d'un nouvel item "Supprimer avec autorisation" Quand on clique dessus une InputBox apparaît et demande le mot de passe pour supprimer la feuille
COPIEZ LES CODES CI-DESSOUS 1) Dans un module standard '************* '#### Constante à adapter selon password #### Const MOT_DE_PASSE As String = "123456" '############################################ '____________________ Sub DesactiveSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl Dim bool As Boolean For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = False If ctl.Caption = "Supprimer avec autorisation" Then bool = True Next ctl If Not bool Then Set ctl = CommandBars("Ply").Controls.Add _ (Type:=msoControlButton, before:=1) ctl.Caption = "Supprimer avec autorisation" ctl.OnAction = "DeleteAvecMotPasse" End If End Sub '____________________ Sub RetablitSupprimer(Optional dummy As Byte) Dim ctl As CommandBarControl On Error Resume Next For Each ctl In CommandBars("Ply").Controls If ctl.ID = 847 Then ctl.Enabled = True If ctl.Caption = _ "Supprimer avec autorisation" Then ctl.Delete Next ctl End Sub '____________________ Sub DeleteAvecMotPasse(Optional dummy As Byte) Dim retour$ retour$ = InputBox( _ prompt:="Indiquez le mot de passe pour supprimer la feuille", _ Title:="Supprimer avec autorisation") If retour$ = MOT_DE_PASSE Then ActiveSheet.Delete End Sub '*************
2) Dans l'éditeur de code de la Feuille concernée (ou les feuilles) '************* Private Sub Worksheet_Activate() Call DesactiveSupprimer End Sub
Private Sub Worksheet_Deactivate() Call RetablitSupprimer End Sub '*************
Cordialement.
PMO Patrick Morange
PMO
Bonjour,
Je précisais dans mon premier post :
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
Quant au reste, merci d'apporter de l'eau au moulin.
J'évite, par expérience, d'être péremptoire et je n'indique que des pistes, un tremplin en quelque sorte.
A tes prochaines critiques.
Cordialement.
PMO Patrick Morange
Bonjour,
Je précisais dans mon premier post :
Voici une piste qui ne prend en considération que l'item
"Supprimer" du menu contextuel apparaissant à la suite
d'un clic droit sur l'onglet.
Je suppose que vous avez déjà modifié la WorkSheet Menu Bar
pour désactiver Edition/Supprimer une feuille.
Quant au reste, merci d'apporter de l'eau au moulin.
J'évite, par expérience, d'être péremptoire et je
n'indique que des pistes, un tremplin en quelque sorte.
Voici une piste qui ne prend en considération que l'item "Supprimer" du menu contextuel apparaissant à la suite d'un clic droit sur l'onglet. Je suppose que vous avez déjà modifié la WorkSheet Menu Bar pour désactiver Edition/Supprimer une feuille.
Quant au reste, merci d'apporter de l'eau au moulin.
J'évite, par expérience, d'être péremptoire et je n'indique que des pistes, un tremplin en quelque sorte.