Icone sous-menu VB | Excel

Résolu
Harry -  
 Utilisateur anonyme -
Bonjour,

Je veux créer un menu supplémentaire et un sous menu dans la barre Excel quand je lance un fichier, avec le code VB suivant :

Set niveau_menu = Application.CommandBars("Worksheet Menu Bar").FindControl(Type:=msoControlPopup, Tag:="niveau_menu")
If niveau_menu Is Nothing Then
' création du bouton sur la barre de menu
Set niveau_menu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, temporary:=True) '
niveau_menu.Caption = "&Users AVT"
niveau_menu.Tag = "Niveau_menu"

Set sous_menu1 = niveau_menu.Controls.Add(Type:=msoControlButton, ID:=548, temporary:=True)
sous_menu1.Caption = "&Ajouter un utilisateur"
sous_menu1.OnAction = "parametre1"

avec ce code ça marche, le problème est que je veux mettre une petite icône à côté du libellé du sous menu, cette icône est désigné par un nombre prédéfini dans VB apparemment...

L'icône qui correspond au nombre 548 s'affiche, mais quand je décide de changer l'ID pour afficher une autre image, par exemple 27, ça bugue et j'ai l'erreur suivante :

Erreur d'exécution '-2147467259 (80004005)':

Erreur Automation
Erreur non spécifiée

voilà je comprends pas du tout pourquoi certaines images s'affichent et d'autres font planter...
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Voici un exemple type de la création du menu dynamique sous Excel avec ces icons dont vous parlé !

    Function AjoutBarreMenu() As Boolean
    '
    Dim Texte As String
    Dim I As Integer
    Dim Flag As Boolean
    Dim BarreMenu, MaBarre, MonItem As Object
    
    On Error GoTo Err_Barre
    
        Flag = SupprimeMenu
        Flag = False
        
        'Création de la barre de menu
        Set BarreMenu = Application.CommandBars.ActiveMenuBar
        Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup, temporary:=True)
        
        MaBarre.Caption = "Automatisme"
        
        'Insère menu
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Ouvrir sans VBA"
            .OnAction = "OuvrirSansVBA"
            .FaceId = 2579
        End With
            
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "VB Editeur"
            .OnAction = "VBEditeur"
            .FaceId = 66
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Active Évènement"
            .OnAction = "ActiveEvenement"
            .FaceId = 66
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Désactive Évènement"
            .OnAction = "DesactiveEvenement"
            .FaceId = 66
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Trier les onglets par noms"
            .OnAction = "A_FonctionsPerso.TrierOnglets"
            .FaceId = 1000
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Produit la liste des Menus"
            .OnAction = "ListeMenus"
            .FaceId = 212
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Produit la liste des Barres"
            .OnAction = "ListeBarres"
            .FaceId = 642
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Efface les cellules de la feuille"
            .OnAction = "EffaceCellulePage"
            .FaceId = 635
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Personnalisé la barre de titre d'Excel"
            .OnAction = "RenommeExcel"
            .FaceId = 222
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Test si le presse-papier est vide"
            .OnAction = "TestContenuPressePapier"
            .FaceId = 22
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Affiche Info Systême"
            .OnAction = "ChercheSystemeInfo"
            .FaceId = 487
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Affiche version de Windows"
            .OnAction = "ChercheWindowsVersion"
            .FaceId = 1016
        End With
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Affiche version du fichier"
            .OnAction = "VersionFichier"
            .FaceId = 1000
        End With
        
    'TrierOnglets
        
        Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
        With MonItem
            .Caption = "Nouveau"
            .OnAction = "Boucle"
            .FaceId = 222
        End With
        
        AjoutBarreMenu = True
        
    Exit_Barre:
        Exit Function
        
    Err_Barre:
        AjoutBarreMenu = False
        Texte = "Erreur dans la routine AjoutBarreMenu"
        Texte = Texte & Chr(13) & Err.Number
        Texte = Texte & Chr(13) & Err.Description
        MsgBox Texte
        Resume Next
        
    End Function
    '
    


    donc c'est l'instruction : [ .FaceId = 2579 ] qui définit l'icone.

    À l'aide du classeur suivant :
    http://membre.oricom.ca/lupin/documents/barreoutils.xls

    La nouvelle barre d'outils créé permet de visualiser 20 X 20 barres d'outils avec tous les icones
    disponible. En déplaçant la souris audessus d'un icone, le [ FaceId ] apparait dans un info-bulle.

    Lupin.
    4
  2. LePierre Messages postés 249 Statut Membre 338
     
    bonjour

    À l'aide du classeur suivant : 
    http://membre.oricom.ca/lupin/documents/barreoutils.xls 
    
    

    il y a un problème avec ton lien car on récupère un fichier sans macro.
    à plus
    0
  3. Utilisateur anonyme
     
    re:

    merci de l'info, c'est corrigé :-)

    de plus j'ai une erreur dans l'instruction de déclaration :

    Dim BarreMenu, MaBarre, MonItem As Object

    qui doit s'écrire :

    Dim BarreMenu As Object, MaBarre As Object, MonItem As Object

    Lupin
    0
    1. kpitaine
       
      Salut lupin,

      Peux-tu m'expliquer comment supprimer tous les icones dans les barres sous complément???
      Je n'arrive pas à me débarasser des barres.
      Merci
      0
      1. Utilisateur anonyme > kpitaine
         
        Bonjour kpitaine,

        Je ne comprends pas la question ?

        ...tous les icones dans les barres sous complément...

        Lupin
        0
  4. LePierre Messages postés 249 Statut Membre 338
     
    Bonjour

    Je n'ai pas trouvé les déclarations "Dim BarreMenu, MaBarre, MonItem As Object " mais ton application fonctionne très bien.
    Félicitations sincères !
    à plus
    0