Merci d'avance.
Jérôme
AV
"Jer" <jerome...@tl.sncf.fr> a écrit dans le message news:
b4niru$km0$1...@muguet.sncf.fr...
"Jer" <jerome...@tl.sncf.fr> a écrit dans le message de news:
b4niru$km0$1...@muguet.sncf.fr...
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...
Bonne journée.
Jer
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...
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
> 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...
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...
Le FindControl, c'est encore mieux. ;-))
ru-th a écrit :