Modifier l'image d'un bouton d'1 menu perso avec un fichier .ico

BenHarber

XLDnaute Occasionnel
Bonjour Le Forum,
Je m'adresse une fois de plus à vous, n'ayant pas trouvé de solution (ni sur ce forum, ni ailleurs) qui correspondait exactement à ce que je souhaite faire.

J'ai actuellement une macro qui me crée une barre d'outil perso dans laquelle je place un bouton macro et y affecte une image déjà présente dans Excel. En gros, ça donne :

' Création de la Barre d'outil perso
Application.CommandBars.Add(Name:="MaBarre").Visible = True
Set maBarre = Application.CommandBars("MaBarre")
maBarre.Position = msoBarTop
'...je crée le bouton raccourci
With maBarre
Set monBouton = maBarre.Controls.Add(Type:=msoControlButton)
'...et y attache la commande d'appel
With monBouton
.OnAction = "'C:\Test\FichierTest.xls'!ThisWorkbook.maMacro"
.TooltipText = "Test 1"
.Style = msoButtonIcon
.FaceId = 1820 'Lunettes
End With
End With

Maintenant, à la place du visuel "Lunettes", je souhaiterais que la macro affiche le visuel d'un fichier icône que j'ai créé (''.ico'') : est-ce possible ?

Merci d'avance pour vos idées et suggestions,
 

Dranreb

XLDnaute Barbatruc
Re : Modifier l'image d'un bouton d'1 menu perso avec un fichier .ico

Bonjour
Il y a ça d'une part:
PasteFace, méthode
Voir aussi S'applique à Exemple Spécificités
Copie le contenu du Presse-papiers dans le bouton de barre de commandes spécifié.

expression.PasteFace

expression Obligatoire. Expression qui renvoie un objet CommandBarButton.

Exemple
Cet exemple montre comment rechercher le bouton prédéfini FileOpen et comment lui appliquer l'image du bouton Grammaire et orthographe à partir du Presse-papiers.

Set myControl = CommandBars.FindControl(Type:=msoControlButton, Id:=2)
myControl.CopyFace
Set myControl = CommandBars.FindControl(Type:=msoControlButton, Id:=23)
myControl.PasteFace
et ça aussi:
Picture, propriété
Voir aussi S'applique à Exemple Spécificités
Cette propriété renvoie un objet IPictureDisp représentant l'image d'un objet CommandBarButton.

expression.Picture

expression Obligatoire. Expression qui renvoie un objet CommandBarButton.

Notes
Lorsque vous modifiez l'image d'un bouton, utilisez également la propriété Mask pour définir une image de masque. L'image de masque détermine quelles parties de l'image du bouton sont transparentes. Définissez toujours le masque après avoir défini l'image pour un objet CommandBarButton.

Remarque Les images des boutons Afficher une Application Microsoft et Insertion Élément de la barre d'outils Standard de Visual Basic Editor ne peuvent être modifiées.

Exemple
L'exemple suivant montre comment définir l'image et le masque du premier objet CommandBarButton que le code renvoie. Créez pour cela une image de masque et une image de bouton et remplacez les chemins contenus dans l'exemple par les chemins d'accès à vos images.

Sub ChangeButtonImage()
Dim picPicture As IPictureDisp
Dim picMask As IPictureDisp

Set picPicture = stdole.StdFunctions.LoadPicture( _
"c:\images\picture.bmp")
Set picMask = stdole.StdFunctions.LoadPicture( _
"c:\images\mask.bmp")

'Reference the first button on the first command bar
'using a With...End With block.
With Application.CommandBars.FindControl(msoControlButton)
'Change the button image.
.Picture = picButton

'Use the second image to define the area of the
'button that should be transparent.
.Mask = picMask
End With
End Sub
L'exemple suivant montre comment obtenir l'image et le masque du premier objet CommandBarButton que le code renvoie et comment les placer dans un fichier. Pour cela, spécifiez un chemin pour les fichers de sortie.


Sub GetButtonImageAndMask()
Dim picPicture As IPictureDisp
Dim picMask As IPictureDisp

With Application.CommandBars.FindControl(msoControlButton)
'Get the button image and mask of the this CommandBarButton object.
Set picPicture = .Picture
Set picMask = .Mask
End With

'Save the button image and mask in a folder.
stdole.SavePicture picPicture, "c:\temp\image.bmp"
stdole.SavePicture picMask, "c:\temp\mask.bmp"
End Sub
À+
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2