Suppression de feuille

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5427751
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)
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)
Le #5427741
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
Le #5427721
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)
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)
Le #5427701
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
Le #5427681
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)
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



Michel (pen ar bed)
Le #5427671
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)
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
Le #5427471
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
Le #5427441
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
Le #5427431
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
PMO
Le #5427361
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
Publicité
Poster une réponse
Anonyme