bonjour à tous
J'ai créer un fichier pour la réalisation de devis.
J'ai donc créer des menus qui viennent ce positionner dans l'onglet compléments.
Ci-dessous une partie du code de création des menus qui est appelé par un workbook_Open.
Ca marche nickel.
Par contre il m'arrive d'ouvrir un ou plusieurs fichier en même temps. Avec cela m'ouvre une deuxième fenêtre, le programme exécute le workbook_ open, cela crée une deuxième fois les menus.
Maintenant si on ferme un des deux fichiers, par exemple le premier j'exécute un Workbook_BeforeClose
qui contient la macro de suppression des barres d'outils.
Mais problème je supprime les barres d'outils que sur (le fichier) la fenêtre en cour d'exécution. Donc dans le deuxième fichier j'ai encore mes deux barres de menu.
Donc à force d'ouvrir mes fichiers je me retrouve avec une ribambelle de menu ce qui est embêtant et à tendance à faire planter le programme.
Je voudrais donc trouver un moyen d'évité la création de plusieurs menu.
soit faire une boucle sur la suppression des différent menus
soit supprimer les menus exista,nt avant leur création.
merci d'avance de votre aide
J'ai créer un fichier pour la réalisation de devis.
J'ai donc créer des menus qui viennent ce positionner dans l'onglet compléments.
Ci-dessous une partie du code de création des menus qui est appelé par un workbook_Open.
Code:
Public Const nombarreo As String = "Gestion"
Public Const nommenu As String = "Bibliothéque"
Public Const nommenu2 As String = "Base"
Public Const nommenu3 As String = "Facture"
Public Const nommenu5 As String = "Devis"
' menus d'Excel
Public Const nombarre As String = "Worksheet menu bar"
' Purpose : création d'une barre d'outils
'---------------------------------------------------------------------------------------
Option Explicit
Sub Creer_Menu()
Dim NewMenu As CommandBarPopup
Dim NewSubMenu As CommandBarPopup
Dim NewButton As CommandBarButton
'ajouter un menu
Set NewMenu = Application.CommandBars(nombarre).Controls.Add _
(Type:=msoControlPopup)
NewMenu.Caption = nommenu
' 'ajouter un bouton au menu
Set NewButton = NewMenu.Controls.Add(Type:=msoControlButton)
With NewButton
.Caption = "New client"
'.BeginGroup = True
.FaceId = 2475
.OnAction = "newclient"
End With
'ajouter un bouton au menu
Set NewButton = NewMenu.Controls.Add(Type:=msoControlButton)
With NewButton
.Caption = "client"
'.BeginGroup = True
.FaceId = 2475
.OnAction = "client"
End With
'ajouter un bouton au menu
Set NewButton = NewMenu.Controls.Add(Type:=msoControlButton)
With NewButton
.Caption = "Nouvelle REF"
'.BeginGroup = True
.FaceId = 2553
.OnAction = "NewRef"
End With
' 'ajouter un bouton au menu
Set NewButton = NewMenu.Controls.Add(Type:=msoControlButton)
With NewButton
.Caption = "Importer REF"
'.BeginGroup = True
.FaceId = 2475
.OnAction = "importerREF"
End With
'ajouter un bouton au menu
Set NewButton = NewMenu.Controls.Add(Type:=msoControlButton)
End Sub
Ca marche nickel.
Par contre il m'arrive d'ouvrir un ou plusieurs fichier en même temps. Avec cela m'ouvre une deuxième fenêtre, le programme exécute le workbook_ open, cela crée une deuxième fois les menus.
Maintenant si on ferme un des deux fichiers, par exemple le premier j'exécute un Workbook_BeforeClose
qui contient la macro de suppression des barres d'outils.
Code:
Sub Suppr_Menu()
Dim NewMenu As CommandBarPopup
On Error Resume Next
Set NewMenu = Application.CommandBars(nombarre).Controls(nommenu)
NewMenu.Delete
Set NewMenu = Application.CommandBars(nombarre).Controls(nommenu2)
NewMenu.Delete
Set NewMenu = Application.CommandBars(nombarre).Controls(nommenu3)
NewMenu.Delete
Set NewMenu = Application.CommandBars(nombarre).Controls(nommenu5)
NewMenu.Delete
End Sub
Mais problème je supprime les barres d'outils que sur (le fichier) la fenêtre en cour d'exécution. Donc dans le deuxième fichier j'ai encore mes deux barres de menu.
Donc à force d'ouvrir mes fichiers je me retrouve avec une ribambelle de menu ce qui est embêtant et à tendance à faire planter le programme.
Je voudrais donc trouver un moyen d'évité la création de plusieurs menu.
soit faire une boucle sur la suppression des différent menus
soit supprimer les menus exista,nt avant leur création.
merci d'avance de votre aide
Dernière édition: