Bonjour,

Je développe actuellement une application qui crée un menu personnalisé lors de son ouverture et le supprime lors de sa fermeture.

Mais, je suis parfois amené à en ouvrir plusieurs qui utilisent le même menu.
Donc, lors de l'ouverture, je le supprime tout le temps (le menu personnalisé) et le recrée à l'identique et lors de la fermeture.

J'aimerai tester s'il existe, dans les autres classeurs ouverts ce fameux menu personnalisé et, donc, ne pas le supprimer si c'est le cas (voir plutôt le cacher) et le supprimer sinon...
Pour ce faire, j'utilise ce code dans Thisworkbook avec le déclencheur Workbook_BeforeClose (mon menu se nomme "Miodos" et se place juste avant le menu d'aide):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'il faut tester si dans les autres classeurs ouvert il existe un objet Miodos dans le menu
Dim MiodosExiste As Boolean
MiodosExiste = False
For Each w In Workbooks
    Dim cb As CommandBarPopup
    For Each cb In w.CommandBars(1)
        If UCase(cb.Caption) = UCase("Miodos") Then
            MiodosExiste = True
        End If
    Next cb
Next w
'si il y en a un, on ne fait rien sinon on 'efface
If Not MiodosExiste Then
    Call Menu.EffacerMenu
End If
ThisWorkbook.Save
End Sub
Mais, lors de son execution, à la ligne "For Each cb In w.CommandBars(1)", il me met "objet requis".

Pouvez-vous me trouver une solution? ou une piste de résolution du problème?

Merci d'avance ;-p