Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Peut on empecher la suppression d'une feuille?

815 views
Skip to first unread message

Jer

unread,
Mar 12, 2003, 10:12:49 AM3/12/03
to
Bonjour,
Sous Excel97, il n'existe aucun evenement permettant d'intercepter le
traitement avant la suppression d'une feuille.
Est ce qu'il existe un moyen quelconque de le faire? (sans evenement ça va
être dur)
Ou
Peut t-on empecher la suppression d'une feuille par un utilisateur (menu
edition ou bouton droit onglet)?

Merci d'avance.
Jérôme


AV

unread,
Mar 12, 2003, 10:28:27 AM3/12/03
to
En protegeant le classeur ça fait pas ?

AV

"Jer" <jerome...@tl.sncf.fr> a écrit dans le message news:
b4niru$km0$1...@muguet.sncf.fr...

Papou

unread,
Mar 12, 2003, 10:44:06 AM3/12/03
to
Bonjour Jérôme
Sinon, dans l'évènement BeforeSave ?
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
On Error GoTo PeuxPas
Sheets("Titi").Activate
Exit Sub
PeuxPas:
MsgBox "La feuille Titi a été supprimée, vous ne pouvez pas enregistrer
les modifications sur ce classeur", vbInformation + vbOKOnly,
"Enregistrement interdit"
Cancel = True
End Sub

"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b4niru$km0$1...@muguet.sncf.fr...

ChrisV

unread,
Mar 12, 2003, 8:31:52 PM3/12/03
to
Bonjour Jérôme,

Dans la feuille de code de l'onglet concerné...

Private Sub Worksheet_Activate()
On Error Resume Next
With Application
.CommandBars(36).Controls(3).Enabled = False
.CommandBars(1).Controls(2).Controls(12).Enabled = False
End With
End Sub

Private Sub Worksheet_Deactivate()
On Error Resume Next
With Application
.CommandBars(36).Controls(3).Enabled = True
.CommandBars(1).Controls(2).Controls(12).Enabled = True
End With
End Sub


ChrisV


"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b4niru$km0$1...@muguet.sncf.fr...

Jer

unread,
Mar 13, 2003, 2:23:01 AM3/13/03
to
ehhh
Merci à tous.
AV -> malheureusement la protection du classeur est trop restrictive (peut
pas inserer, ou copier des feuilles au niveau utilisateur)
Papou -> Empecher l'enregistrement n'est pas une mauvaise idée mais j'ai
peur de la réaction de panique des pauvres utilisateurs.
Chris -> Je pense que c'est la solution la plus simple.
J'espere qu'il n'y a pas d'autres méthodes pour les utilisateurs de
supprimer une feuille à part le menu edition et le bouton droit sur
l'onglet.

Bonne journée.
Jer

ChrisV

unread,
Mar 13, 2003, 3:33:30 AM3/13/03
to
Re...

Il y a bien la possibilité de supprimer un onglet avec Alt+EM...

mais pas d'inquiétude, ce raccourci est inhibé par la désactivation du
contrôle 12...
(il ne sera donc pas nécessaire d'utiliser la méthode OnKey)

nb: testé sous XP

ChrisV


"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:

b4pbn0$es1$1...@muguet.sncf.fr...

Michel Gaboly

unread,
Mar 13, 2003, 4:28:14 AM3/13/03
to
Bonjour,

Quelques précisions concernant la solution de Chris.

Par hypothèse, considérons que la feuille qui ne doit pas pouvoir être supprimée
s"appelle "A Conserver".

Les événenents Activate et Deactivate d'une feuille ne se produisent que lorsque la
feuille active d'un classeur est modifiée, c'est-à-dire quand on passe d'une feuille
à une autre dans un autre classeur.

Ces événements ne se produisent pas si le classeur ne contient que cette feuille. Mais
ceci n'est pas grave, car il n'est pas possible de supprimer une feuille dans un classeur
ne contenant pas au moins 2 feuilles.

Par contre, si "A Conserver" est la feuille active, et qu'on active ou qu'on ouvre
un autre classeur, l'événement Deactivate de "A Conserver" ne se déclenche pas non
plus et c'est plus grave, car la commande Supprimer une feuille reste grisée.

Il n'est donc pas non plus possible de supprimer une feuille dans le nouveau classeur
actif. Pour que le problème ne survienne pas, il faut sélectionner d'abord une autre
feuille que "A Conserver" dans le même classeur pour déclencher l'événement
Deactivate de "A Conserver" avant d'activer ou d'ouvrir un autre classeur

Il existe une solution simple, heureusement : ajouter le code associé au Deactivate
de la feuille "A Conserver", dans la procédure Deactivate du classeur (onglet
ThisWorkbook).

D'autre part, l'ordre des menus et la position des commandes peut varier selon les
versions d'Excel.

L'ordre des menus, cela peut paraître surprenant, mais sous MacOS X, le premier
menu est le menu de l'application, "Excel" en l'occurrence, qui contient en particulier
les préférences. "Fichier" est le second menu et "Edition" le troisième.

Quant à la position des commandes, c'est plus banal. Par exemple dans Excel 98 (Mac
également), "Supprimer une feuille" est la 11ème commande (et non la douzième) du
menu "Edition".

Pour tester :

Private Sub TestPositionSupprimer()


On Error Resume Next
With Application

MsgBox .CommandBars(36).Controls(3).Caption
MsgBox .CommandBars(1).Controls(2).Controls(12).Caption
End With
End Sub

Si les utilisateurs utilisent plusieurs versions différentes d'Excel, ou pour tenir
compte des futures versions, qui auront peut-être des commandes supplémentaires
dans le menu "Edition", il est plus prudent de remplacer les numéros des contrôles par
leurs noms, par exemple :

.CommandBars(1).Controls("Edition").Controls("Suppri&mer une feuille").Enabled = False

au lieu de

.CommandBars(1).Controls(2).Controls(12).Enabled = False

On obtient ainsi des instructions moins concises, mais plus universelles.

Jer a écrit :

--
Cordialement,

Michel Gaboly
http://www.gaboly.com


ru-th

unread,
Mar 13, 2003, 4:43:46 AM3/13/03
to
Salut Michel

> Si les utilisateurs utilisent plusieurs versions différentes d'Excel, ou
pour tenir
> compte des futures versions, qui auront peut-être des commandes
supplémentaires
> dans le menu "Edition", il est plus prudent de remplacer les numéros des
contrôles par
> leurs noms, par exemple :
>
> .CommandBars(1).Controls("Edition").Controls("Suppri&mer une
feuille").Enabled = False

certes, mais s'ils ont des versions internationales ?

Application.CommandBars("edit").FindControl(ID:=847).Enabled = True
;-)
--
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"Michel Gaboly" <mic...@gaboly.com> a écrit dans le message news:
3E704CA7...@gaboly.com...

ru-th

unread,
Mar 13, 2003, 4:58:56 AM3/13/03
to
Oups,

le true à remplacer False

désolé.....

--
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"ru-th" <no_pub_i...@free.fr> a écrit dans le message news:
uiFy3UU6...@TK2MSFTNGP10.phx.gbl...

Michel Gaboly

unread,
Mar 17, 2003, 10:40:33 AM3/17/03
to
Salut ru-th,

Le FindControl, c'est encore mieux. ;-))


ru-th a écrit :

0 new messages