Barre de Menu personnalisée

CdG06

XLDnaute Nouveau
Bonjour à tout le forum,

Quand j'ouvre un classeur(1), une barre de menu personnelle s'installe. Si j'ouvre un autre classeur(2), comprenant la même barre de menu personnelle, alors il y a plantage.

Je comprend bien, qu'Excel n'apprécie guère qu'on lui demande de faire deux fois la même chose:rolleyes:

Dès lors, quel test dois-je faire (pour vérifier si la barre de menu existe déja, quelque soit le classeur ouvert en premier?

Ci après le bout de code de création :

Merci de votre précieuse aide et bonne journée.

____________________________________________

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Créat_barre.supr_barre

End Sub

Private Sub Workbook_Open()
Call Créat_barre.création_barre
Dim FlagClassement As Boolean
Dim Compteur As Integer
FlagClassement = True
Do While FlagClassement = True
FlagClassement = False

Loop

End Sub
 

Theze

XLDnaute Occasionnel
Re : Barre de Menu personnalisée

Bonjour,

Si la barre est lié au classeur, regarde du coté des évènements "Workbook_Activate" et "Workbook_Deactivate" pour chaque classeur afin de cacher/afficher la barre d'outils correspondante.

Hervé.
 

CdG06

XLDnaute Nouveau
Re : Barre de Menu personnalisée

Bonjour Theze,

Merci de ta réponse. En fait beaucoup de classeurs utilise la même macro de création de barre de menu. Rarement, j'ouvre 2 classeurs en même temps. Donc je n'ai jamais eu de soucis. Mais quand j'ai besoin que 2 ou 3 classeurs soients ouverts avec cette barre, la ca se gatte...... Et je ne vois pas comment empecher l'activation si un classeur l'a déjà activé.
 

Theze

XLDnaute Occasionnel
Re : Barre de Menu personnalisée

Re,

Dans ce cas, il te faut tester si ta barre existe à l'ouverture du classeur. Le seul problème, c'est que tu ne peux pas fermer un des classeurs car sinon, la barre sera détruite par "Call Créat_barre.supr_barre" même si un autre classeur utilisant cette barre est encore ouvert.
Pour tester si la barre existe :
Code:
Sub Erreur()

    Dim Barre As CommandBar
    
    'évite le plantage de la barre qui n'existe pas
    On Error Resume Next
    
    Set Barre = Application.CommandBars("Ma barre")
    
    'indique si la barre existe ou non
    If Err.Number = 0 Then
        MsgBox "la barre existe"
    Else
        MsgBox "la barre n'existe pas"
    End If
    
    'plus d'erreur en mémoire
    Err.Clear
    
    'arrête le gestionnaire d'erreur
    On Error GoTo 0

End Sub

Hervé.
 

Discussions similaires

Statistiques des forums

Discussions
312 753
Messages
2 091 672
Membres
105 041
dernier inscrit
CHERRIERE