Barre de Menu et userform [Résolu]

dimud 19 Messages postés mardi 29 juillet 2008Date d'inscription 3 juillet 2009 Dernière intervention - 30 juin 2009 à 10:00 - Dernière réponse : dimud 19 Messages postés mardi 29 juillet 2008Date d'inscription 3 juillet 2009 Dernière intervention
- 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.

Quelqu'un a t il une idée à me soumettre ?

Merci d'avance
Dimud
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 30 juin 2009 à 10:34
3
Merci
.OnAction = "nom de la fonction publique dans un module"

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
dimud 19 Messages postés mardi 29 juillet 2008Date d'inscription 3 juillet 2009 Dernière intervention - 30 juin 2009 à 15:24
0
Merci
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
Commenter la réponse de dimud
dimud 19 Messages postés mardi 29 juillet 2008Date d'inscription 3 juillet 2009 Dernière intervention - 30 juin 2009 à 16:23
0
Merci
J'ai touvé !!!

Merci ghuysmans99
Commenter la réponse de dimud

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.