Bonjour,
Après recherche sur le net, il semble impossible de mettre le fond des boutons en couleur dans une barre d'outils (commandbar) (Excel 2003).
Par contre, on peut trouver des icônes en couleur (je cherche des petits carrés en couleur) suivant le numéro du "faceid". Mais, a priori, il y a en très peu.
Ma question : comment en avoir d'autres ?
Les boutons de la barre d'outils servent à remplir automatiquement des cellules suivant le type d'absences (voir code ci-dessous)
Sub auto_open()
On Error Resume Next
Dim barre As CommandBar
Dim bouton As CommandBarControl
Dim bouton4 As CommandBarControl
Set barre = Application.CommandBars.Add(Name:="Planning des absences")
Set bouton = CommandBars("Planning des absences").Controls.Add(Type:=msoControlButton)
With bouton
.Style = msoButtonIconAndCaption
.TooltipText = "Congés"
.Width = 123
.BeginGroup = True
.FaceId = 6859
.OnAction = "Congés"
.Caption = "Congés"
End With
Set bouton = CommandBars("Planning des absences").Controls.Add(Type:=msoControlButton)
With bouton
.Style = msoButtonIconAndCaption
.TooltipText = "Congés RTT"
.Width = 123
.BeginGroup = True
.FaceId = 6851
.OnAction = "Congés_rtt"
.Caption = "RTT"
End With
Set bouton = CommandBars("Planning des absences").Controls.Add(Type:=msoControlButton)
With bouton
.Style = msoButtonIconAndCaption
.TooltipText = "Maladie"
.Width = 123
.BeginGroup = True
.FaceId = 6852
.OnAction = "Maladie"
.Caption = "Maladie"
End With
With CommandBars("Planning des absences")
.Position = msoBarFloating
.Visible = True
.Width = CommandBars("Planning des absences").Width / 3
End With
End Sub
Sub auto_close()
On Error Resume Next
CommandBars("Planning des absences").Delete
End Sub
Voici un petit exemple d'une barre perso et flottante avec des icônes personnalisées et posées sur une feuille de calculs.
shtCustomIcons est le nom de la feuille où sont les icônes.
J'avoue que le plus dur est de faire de jolies icônes.
Le code
Code:
.FaceId = 1017
est remplacé par
Code:
shtCustomIcons.Shapes("Icon1").Copy
.PasteFace
Pièces jointes
Exemple de création d'une barre de menus avec boutons personnalisés.xls
C'est effectivement possible, mais la barre étant crée en VBA, les modifications apportées à l'icône ne sont pas sauvegardées et n'apparaissent plus au lancement suivant du fichier
J'ai vu une astuce qui permettait de copier une image présente dans la feuille et de la coller dans la procédure de création du bouton (avec 'paste' quelque chose...), à la place du "faceId", mais impossible de la retrouver !
Voici un petit exemple d'une barre perso et flottante avec des icônes personnalisées et posées sur une feuille de calculs.
shtCustomIcons est le nom de la feuille où sont les icônes.
J'avoue que le plus dur est de faire de jolies icônes.
Le code
Voici un petit exemple d'une barre perso et flottante avec des icônes personnalisées et posées sur une feuille de calculs.
shtCustomIcons est le nom de la feuille où sont les icônes.
J'avoue que le plus dur est de faire de jolies icônes.
Le code
J'ai fait plusieurs essais, ça marche pas sur ma feuille
Il doit y avoir une erreur quelque part, puisque ça marche avec ton code...
Je continue de chercher
Merci quand même !
sinon, on peut aussi le faire à partir d'un fichier image :
Code:
Set Bt = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, before:=5, temporary:=True)
Bt.Picture = stdole.StdFunctions.LoadPicture("C:\test\bouton.gif")
Moi je l'avais fait avec une image gif de 16X16 pixels, et ça rend pas mal.
L'avantage de l'image en fichier est que tu peux définir la propriété Mask du bouton avec une autre image en noir et blanc (qui donne l'effet de "relief" lors du survol du bouton)
Bon, j'ai fini par trouvé
Le code était bon... Je suis resté fixé sur une éventuelle erreur dans les procédures alors que tout simplement j'avais oublié de renommer la feuille contenant les icônes dans les propriétés de VBA (je l'avais bien renommé dans Excel, mais c'était pas là qu'il fallait le faire )
Petite question à 1 € : tu fais les icônes dans un éditeur d'icônes ou un logiciel de dessin ?
sinon, on peut aussi le faire à partir d'un fichier image :
Code:
Set Bt = Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, before:=5, temporary:=True)
Bt.Picture = stdole.StdFunctions.LoadPicture("C:\test\bouton.gif")
Moi je l'avais fait avec une image gif de 16X16 pixels, et ça rend pas mal.
L'avantage de l'image en fichier est que tu peux définir la propriété Mask du bouton avec une autre image en noir et blanc (qui donne l'effet de "relief" lors du survol du bouton)