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

Suppression de feuille

15 réponses
Avatar
Michel (pen ar bed)
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.

10 réponses

1 2
Avatar
JB
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) 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.


Avatar
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.

Avatar
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.



Avatar
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

Avatar
JB
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 n on 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



Avatar
Michel (pen ar bed)
JB a formulé ce lundi :
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.



Avatar
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
Avatar
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
Avatar
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
Avatar
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
1 2