Barre d'outils perso

  • Initiateur de la discussion Initiateur de la discussion apt
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

apt

XLDnaute Impliqué
Bonsoir,

Dans le fichier joint, le code pour en avoir ma barre d'outils ne fait rien.

Un autre problème : le style de reference deviandra L1C1 !!

Quelle en serait la cause ?

Merci.
 

Pièces jointes

Re : Barre d'outils perso

Bonsoir Marc77,

J'aimerais crée avec le code en fichier joint, une barre d'outils listant tout mes feuilles de mon classeur.

1 - Mais je n'ai pu pas avoir cette barre.
2 - Le code lui même rend le style de reference en L1C1 (même si j'enleve la croix devant cette options à chaque fois)
 
Re : Barre d'outils perso

Bonsoir,

Apres une rapide lecture de ton code:

Ta variable menu représente d'abord un menu de barre d'outils, puis une chaine de caracteres, ensuite tu essaye d'ajouter un bouton a cette chaine..

En réaffectant ta variable menu au bouton que tu as essaye de créer tu perd la réference au menu censé contenir ce bouton, en conséquence au deuxieme passage dans la boucle tu essaye d'ajouter un bouton sur un bouton..

Je te recommande de déclarer toutes tes variables en précisant leur type, ca ne peut que t'aider.

Ton code modifié, a toi de le tester:
Code:
Sub ChoixFeuille()
    Sheets(Application.CommandBars.ActionControl.Caption).Select
End Sub

Sub Auto_open()
    Dim MyBar As CommandBar
    Dim Menu As CommandBarPopup
    Dim Button As CommandBarButton
    Dim i As Long
    Set MyBar = CommandBars.Add(Name:="BarreFeuilles", Position:=msoBarLeft, _
                                Temporary:=True)
    With MyBar
        .Visible = True         'pour l'afficher
        .Position = msoBarTop   'pour la positionner
    End With

    Set Menu = MyBar.Controls.Add(Type:=msoControlPopup)

    With Menu
        .Caption = " Voir les Icones "
        For i = 1 To Sheets.Count
            Set Button = .Controls.Add(Type:=msoControlButton)
            With Button
                .Caption = Sheets(i).Name
                .FaceId = 184
                .OnAction = "ChoixFeuille"
            End With
        Next
    End With
End Sub

J'ajouterais que Auto_open et Auto_close bien qu'étant toujours supportées sont désormais avantageusement remplacables par Workbook_Open et Workbook_BeforeClose.

Cordialement,

Tirex28/
 
Dernière édition:
Re : Barre d'outils perso

Bonsoir tirex28;

Merci, ca marche.

Mais ce code :

Code:
Set Button = .Controls.Add(Type:=msoControlButton)
            With Button
                .Caption = Sheets(i).Name
                .FaceId = 184
                .OnAction = "ChoixFeuille"
            End With

est cencé garder que le dernier boutton crée ? non ?

Merci.
 
Re : Barre d'outils perso

Bonsoir,

Button est une variable temporaire qui stocke la référence a l'objet créé à chaque passage dans la boucle. Cela permet ensuite de manipuler facilement cet objet pour définir ses propriétés (ici Caption,FaceId et OnAction).

Les boutons n'ont pas de propriété Name et rien n'empêche (même si c'est un non-sens) d'avoir deux boutons identiques sur le même menu.

Cordialement,

Tirex28/
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
188
Réponses
24
Affichages
272
Réponses
2
Affichages
186
  • Question Question
Réponses
49
Affichages
1 K
Réponses
2
Affichages
212
Réponses
0
Affichages
202
Retour