Problème VBA --Urgent--

nectar Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Il se trouve que mon application génère une barre d'outils que je ne parviens plus à supprimmer

J'ai effacé toutes les autres barres d'outils, et puis j'ai exécuté ce code pour récupérer l'index de la barre d'outils intempestive :

MsgBox ActiveMenuBar.Index

ce qui me retourne le numéro -4167

est-ce bien normal ???

Comment puis-je effacer cette barre d'outils ?

Si j'essaye avec

Application.CommandBars(-4167).Delete

celà me retourne un message d'erreur code 9 : l'indice n'appartient pas à la selection...

Petit détail : il se peut que ce soit des objets OLE qui affichent cette barre d'outils complétement vide et indestructible....

1 réponse

Utilisateur anonyme
 
Bonjour,

Repérer et télécharger le fichier VizioXLA sur cette page :

https://www.excel-downloads.com/resources/categories/utilitaires.18/

Décompresser et lancer ce classeur.

À l'aide du nouveau menu [ Menu des listes ], choisir [ Énumère Barre de Menu ]

Vous obtiendrai ainsi le nom de cette barre d'outils et ensuite appliquer cette routine :

Sub SupprimeMenu()

    Dim Barre As CommandBarControl
        
    For Each Barre In Application.CommandBars.ActiveMenuBar.Controls
        ' Ici, le nom [ Automatisme ] doit être remplacer par le nom de votre barre d'outils.
        If (Barre.Caption = "Automatisme") Then
            Barre.Delete
        End If
    Next Barre

End Sub
'


De plus je dois vous souligner que j'ai fait une erreur dans la fonction SupprimeMenu
du classeur VisioXLA, la fonction est défini comme suit :
Function SupprimeMenu(CeMenu As String) As Boolean

    Dim Cmpt, Nombre As Integer
    Dim Barre As CommandBarControl
        
    Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
    For Cmpt = 1 To Nombre
        If (Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption = CeMenu) Then
            Application.CommandBars("Worksheet Menu Bar").Controls(CeMenu).Delete
        End If
    Next Cmpt
    Cmpt = 0
    SupprimeMenu = True

Exit_Close:
    Exit Function

Err_Close:
    MsgBox "Erreur dans la routine SupprimeMenu du classeur VizioXLA!"
    MsgBox Err.Number & " - " & Err.Description
    SupprimeMenu = False

End Function
'


et devrait plutôt s'écrire comme suit :
Function SupprimeMenu(CeMenu As String) As Boolean

    Dim Barre As CommandBarControl
        
    On Error GoTo Err_Close
    
    For Each Barre In Application.CommandBars.ActiveMenuBar.Controls
        If (Barre.Caption = "Menu des Listes") Then
            Barre.Delete
        End If
    Next Barre
    SupprimeMenu = True

Exit_Close:
    Exit Function

Err_Close:
    MsgBox "Erreur dans la routine SupprimeMenu du classeur VizioXLA!"
    MsgBox Err.Number & " - " & Err.Description
    SupprimeMenu = False

End Function

'


Lupin
0