ouvrir menu - VB/VBA/VBS - Programmation
Marsh Posté le 24-05-2005 à 12:03:29
Faudrait utiliser les évenements KeyUp, KeyDown ou KeyPress (suivant quand tu veux ouvrir ton formulaire)
Code :
|
Voila ca devrait ressembler à quelque chose comme ça!
Marsh Posté le 24-05-2005 à 12:22:49
Humm -> Userform -> Excel, code fourni par Arwenalia .NET ... pas très compatible tout ça.
edit : je crois pas que ce soit faisable si tu n'a pas de userform affiché.
Marsh Posté le 24-05-2005 à 13:02:43
en faite, jai un userform qui sert de menu, avec des bouton de comande etc ...
pour afficher les resultats, qui sont sur des feuille excel, je cache mon userform avec un .hide
or, plutot que de faire un bouton sur chacune de mes feuille excel qui affiche le menu, je voudrai que lorsque je click sur ctrl +m mon userform s'affiche.
et c'est possible, car j'ai un programme (fait par une autre personne) qui fait cela, or j'ai beau chercher, impossible de trouver où est géré ceci
Marsh Posté le 24-05-2005 à 20:07:15
2 possibilités :
- Tu demande la source à l'autre personne
- Tu créé un bouton personnalisé dans la barre d'outils qui affiche ta userform ...
Marsh Posté le 25-05-2005 à 10:44:41
mais j'ai le code ! je n'arrive pas a trouver où est la partie de code correspondante.
quant au bouton dans la barre d'outil je ne savais pas je vais tester.
Marsh Posté le 27-05-2005 à 12:33:52
ousp j'ai rien dit
en effet il y a une macro, mais le seul code est :
Sub Macro2()
' Touche de raccourci du clavier: Ctrl+m
Principal.Show
End Sub
Or où est le lien avec le moment où l'on tape ctrl +m ???
Marsh Posté le 27-05-2005 à 13:03:47
fusion_sadam a écrit : Outils > Macro > Macros |
As-tu lu ce que Fusion_sadam a dit?
Marsh Posté le 27-05-2005 à 13:34:50
Une solution :
dans this workbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ControlsIndex As Integer
Dim NomBar As String
NomBar = "Nom du menu"
For ControlsIndex = 1 To 30
On Error GoTo LabelFin
If Application.CommandBars("Worksheet Menu Bar" ).Controls(ControlsIndex).Caption = NomBar Then
Application.CommandBars("Worksheet Menu Bar" ).Controls(ControlsIndex).Delete
Exit For
End If
Next
LabelFin:
End Sub
Private Sub Workbook_Open()
MonNouveauMenu
End Sub
Sub MonNouveauMenu()
NomProjetStat = ActiveWorkbook.Name
'###########################
'Si la barre existe déjà on l'efface et on la réaffiche
'###########################
Dim ControlsIndex As Integer
Dim NomBar As String
NomBar = "Nom du menu"
For ControlsIndex = 1 To 30
On Error GoTo LabelFin
If Application.CommandBars("Worksheet Menu Bar" ).Controls(ControlsIndex).Caption = NomBar Then
Application.CommandBars("Worksheet Menu Bar" ).Controls(ControlsIndex).Delete
Exit For
End If
Next
LabelFin:
'##########################
Dim MyBar
Dim SubMenu1, SubMenu11, SubMenu12
Dim SubMenu2, SubMenu21, SubMenu22
Dim SubMenu3, SubMenu31
Dim SubMenu4, SubMenu41, SubMenu42, SubMenu43, SubMenu44, SubMenu45, SubMenu46, SubMenu47
'Cette ligne crée le menu dans la barre de menu
Set MyBar = Application.CommandBars("Worksheet Menu Bar" ).Controls.Add(Type:=msoControlPopup, Before:=10)
MyBar.Caption = "Nom du menu" 'Donne un nom au menu
'##################################
'##### Les menus dans le menu #####
'##################################
Set SubMenu1 = MyBar.Controls.Add(Type:=msoControlPopup)
SubMenu1.Caption = "Nom sous menu"
SubMenu1.BeginGroup = True 'C'est pour faire la ligne de séparation dans le menu
Set SubMenu11 = SubMenu1.Controls.Add(Type:=msoControlButton)
With SubMenu11
.BeginGroup = False
.Caption = "Nom sous sous menu"
.Style = msoButtonCaption
.OnAction = "Nom de la macro à éxecuter"
End With
end sub
Marsh Posté le 24-05-2005 à 10:05:11
bonjour, je voudrai ouvrir un userform en pressant ctrl + m par exemple, comment faire?
merci d'avance