Hello à tous,
Explication du contexte :
Suite à une petite Appli que j'ai faite en VBA, J'ai un classeur dans lequel j'ai une Feuille que j'ai nommé "Mon_Menu"
Dans celle-ci, j'ai mis des boutons qui exécutent du code vba quand on clique dessus.
Le pb est que cette feuille ("Mon_Menu") ne doit pas être supprimée pour pouvoir fonctionner. (normal, puisque c'est la feuille qui constitue le menu....)
En parcourant le net, j'ai réussi à détourner le menu "Supprimer" pour cette feuille qui porte le nom de "Mon_Menu".. (Feuille = Onglet)
Cad Désactivzer ces 2 Menus : Clic droit sur le nom de la Feuille (ou sur le Nom de l'Onglet)/Supprimer, ou Menu Edition/Supprimer Feuille
Mon souci est aussi d’empêcher le renommage de cette Feuille car mon Code VBA est basé dessus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 ------------------------------------------------------------ Dans "ThisWorkbook" Private Sub Workbook_Open() 'Appel de la procédure qui détourne le menu Supprimer Feuille d'Excel ModifierSupprimerFeuille End Sub Public Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next 'Appel à la précédure qui permet de rétablir la configuration originale du menu d'Excel "Supprimer Feuille" RetablirSupprimerFeuille End Sub ------------------------------------------------------------ ------------------------------------------------------------ Dans "Module1" Sub ModifierSupprimerFeuille() On détourne l'action originale de Supprimer Feuille du menu d'Excel (c.OnAction) Dim c As CommandBarControl For Each c In Application.CommandBars.FindControls(ID:=847) c.OnAction = "SupFeuil" Next c End Sub Sub SupFeuil() 'Ajout du message personnalisé quand on lance le menu de Suppression d'une Feuille 'Si cette Feuille se nomme "Mon_menu", On affiche un message et on bloque la Suppression 'Dans le cas contraire on redonne la main à l'utilisateur pour permettre la Suppression (ActiveSheet.Delete) If ActiveSheet.Name = "Mon_Menu" Then MsgBox "Vous ne pouvez pas supprimer cette feuille!", vbc + vbOKOnly + vbExclamation, "INFORMATION" Exit Sub Else ActiveSheet.Delete End If Exit Sub End Sub Sub RetablirSupprimerFeuille() 'Rétablissement à l'origine du menu Supprimer Feuille d'Excel Dim c As CommandBarControl For Each c In Application.CommandBars.FindControls(ID:=847) c.OnAction = "" Next c End Sub ------------------------------------------------------------
Ayant pris comme base d'exemple de code VBA le Blocage du menu Supprimer, j'ai essayer d'adapter et faire de même pour bloquer le menu "Renommer Feuille"
Cad désactiver ces 2 Menus : Clic droit sur le nom de la Feuille (ou sur le Nom de l'Onglet)/Renommer, ou Menu Format/Feuille//Renommer
Pour le code "ID:=889", j'ai réussi à le trouver ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 ------------------------------------------------------------ Dans "ThisWorkbook" Private Sub Workbook_Open() 'Appel de la procédure qui détourne le menu Renommer Feuille d'Excel ModifierRenommerFeuille End Sub Public Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next 'Appel à la procédure qui permet de rétablir la configuration originale du menu d'Excel "Renommer Feuille" RetablirRenommerFeuille End Sub ------------------------------------------------------------ ------------------------------------------------------------ Dans "Module1" Sub ModifierRenommerFeuille() On détourne l'action originale de Renommer Feuille du menu d'Excel (c.OnAction) Dim c As CommandBarControl For Each c In Application.CommandBars.FindControls(ID:=889) c.OnAction = "Renfeuil" Next c End Sub Sub RenFeuil() 'Ajout du message personnalisé quand on lance le menu de Renommage d'une feuille 'Si cette Feuille se nomme "Mon_menu", On affiche un message et on bloque le Renommage 'Dans le cas contraire on redonne la main à l'utilisateur pour permettre la renommage If ActiveSheet.Name = "Mon_Menu" Then MsgBox "Vous ne pouvez pas renommer cette feuille!", vbc + vbOKOnly + vbExclamation, "INFORMATION" Exit Sub Else ActiveSheet.ReName End If Exit Sub End Sub Sub RetablirRenommerFeuille() 'Rétablissement à l'origine du menu Renommer Feuille d'Excel Dim c As CommandBarControl For Each c In Application.CommandBars.FindControls(ID:=889) c.OnAction = "" Next c End Sub ------------------------------------------------------------
ce qui me bloque, c'est la ligne à mettre dans le code qui permet de lancer le menu de Renommage d'une feuille
=> dans la procédure Sub RenFeuil(), "ActiveSheet.ReName" ne fonctionne pas.
(j'ai tenté cette ligne de commande car je n'ai pas trouvé la commande sur le Net)
Pour Explication :
En VBA, pour lancer le menu d'Excel de suppression d'une feuille, c'est "ActiveSheet.Delete"
Pour lancer le Menu de Renommage d'une feuille ???
Je ne suis pas arrivé a trouver la bonne commande
d'où cette tentative..."ActiveSheet.Rename", mais cela passe pas...
Cela doit être autre chose mais quoi ????
Attention :
Par cette commande, je souhaite faire "comme si" l'utilisateur faisait "clic droit sur le Nom de la feuille/Renommer", cela met alors le Nom de la Feuille en Blanc sur Fond Noir et permet à l'utilisateur de mettre un autre nom...si il le désire...
Allure d'une Feuille ou Onglet "Normal" :
Allure d'une Feuille ou Onglet suite à un "Clic droit/Renommer" :
Donc, suite à cette ligne de commande, je souhaite avoir Le Nom de la Feuille en Blanc sur Fond Noir, un point c'est tout, ensuite, c'est l'utilisateur qui décide de la suite a donner..
D'où ma question...
Y aurait-il une âme charitable pour me donner le nom de cette commande...
j'ai essayé de chercher sur le net à propos de c.OnAction mais je n'ai rien trouvé ....
Merci donc a ceux qui pourront me donner ce coup de main...
car j'avoue que là, ....je fais de très grandes brasses.......
Et au cas ou.... un lien pour avoir des infos sur ces "c.OnAction"
Merci de votre Aide.
Partager