dimud
Messages postés19Date d'inscriptionmardi 29 juillet 2008StatutMembreDernière intervention 3 juillet 2009
-
30 juin 2009 à 10:00
dimud
Messages postés19Date d'inscriptionmardi 29 juillet 2008StatutMembreDernière intervention 3 juillet 2009
-
30 juin 2009 à 16:23
Bonjour à tous,
Dans une petite application vba j'ai créer une barre de menu personnalisée regroupant des menus microsoft et des nouveaux menus.
Je souhaiterais pouvoir ouvrir une Userform lors d'un clic sur msobuttoncaption, j'ai essayer ".onaction" sous toutes les formes et je n'y arrive pas.
dimud
Messages postés19Date d'inscriptionmardi 29 juillet 2008StatutMembreDernière intervention 3 juillet 2009 30 juin 2009 à 15:24
Merci,
C'est presque bon !
Ma forme apparait bien lorsque je clic sur le bouton dans le menu mais elle apparait aussi à chaque fois que j'active la fenetre.
Quelques complements :
Je veux que seule cette barre d'outil soit accessible à partir de mon fichier XLS, les barres standard sont alors masquées. Ces opération sont générées à partir de workbook_activate.
A l'inverse si j'ouvre un autre fichier ou que je bascule vers un autre fichier excel, je masque ma barre perso et affiche les barres par défaut. à partir de workbook_deactivate.
Que dois je faire pour corriger cette anomalie ?
Voici mon code :
Private Sub Workbook_Activate()
Dim i As Integer
Dim Cmdbar As CommandBar
Dim CmdPop As CommandBarPopup
Dim CmdBut1 As CommandBarButton
Dim CmdBut2 As CommandBarButton
Dim CmdBut3 As CommandBarButton
' Mise en forme de la fenêtre de l'application
With Application
.ScreenUpdating = False
.WindowState = xlNormal
.Left = 0
.Top = 0
.DisplayScrollBars = False
.DisplayFormulaBar = False
End With
ActiveWindow.WindowState = xlMaximized
Range("A1").Select
'Masque les barres d'outil et de commande afficher par défault dans Excel
For i = 1 To Application.CommandBars.Count
If Application.CommandBars.Item(i).Visible = True Then
Application.CommandBars.Item(i).Enabled = False
End If
Next
'Créer une Barre de Menu personnalisée
Set Cmdbar = Application.CommandBars.Add("TooL UNHAJ", msoBarTop, False, True)
With Cmdbar
.Visible = True
.Protection = msoBarNoMove + msoBarNoCustomize + msoBarNoResize
.Controls.Add Type:=msoControlButton, ID:=2520, Before:=1
.Controls.Add Type:=msoControlButton, ID:=23, Before:=2
.Controls.Add Type:=msoControlPopup, ID:=30009, Before:=3
.Controls("fenêtre").Controls("Nouvelle fenêtre").Delete
.Controls("fenêtre").Controls("Masquer").Delete
.Controls("fenêtre").Controls("Afficher...").Delete
.Controls("fenêtre").Controls("Fractionner").Delete
.Controls("fenêtre").Controls("Figer les volets").Delete
End With
Set CmdPop = Cmdbar.Controls.Add(msoControlPopup, , , 4, True)
With CmdPop
.Caption = "?"
End With
Set CmdBut1 = CmdPop.Controls.Add(msoControlButton, , , 1, True)
With CmdBut1
.Style = msoButtonCaption
.Caption = "S'inscrire sur la liste de diffusion"
.OnAction = "OpenUserForm23Inscription"
.Execute
End With
Set CmdBut2 = CmdPop.Controls.Add(msoControlButton, , , 2, True)
With CmdBut2
.Style = msoButtonCaption
.Caption = "Nous contacter..."
End With
Set CmdBut3 = CmdPop.Controls.Add(msoControlButton, , , 3, True)
With CmdBut3
.Style = msoButtonCaption
.Caption = "A propos de TooL UNHAJ..."
.BeginGroup = True
End With
Set CmdBut3 = Nothing
Set CmdBut2 = Nothing
Set CmdBut1 = Nothing
Set CmdPop = Nothing
Set Cmdbar = Nothing
End Sub
Private Sub Workbook_Deactivate()
Dim i As Integer
ScreenUpdating = False
'Initialisation de la fenêtre Excel lorsque TooL UNHAJ est desactivé ou fermé
With Application
.WindowState = xlMaximized
.DisplayScrollBars = True
.DisplayFormulaBar = True
End With
'Initialise et affiche les Barres par défaut
For i = 1 To Application.CommandBars.Count
Application.CommandBars.Item(i).Enabled = True
Next
Application.CommandBars("TooL UNHAJ").Controls("fenêtre").Reset
'Masque la Barre Personnalisée
Application.CommandBars("TooL UNHAJ").Delete
End Sub