OVH Cloud OVH Cloud

[VBA] Pbom boutons barre d'outils faceID

12 réponses
Avatar
Microsoft VBA Excel
Voilà, je reviens à la charge n'ayant pas encore trouvé la réponse à mon
problème :

j'ai une barre d'outils avec 3 boutons et je souhaite changer les images de
ces 3 boutons en VBA.

Problème : ça marche pour le premier bouton, mais pas les autres. En fait,
ma procédure ne détecte pas le boutons et change systématiquement l'image du
premier...

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton1)
MonBtn.FaceId = 343

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton2)
MonBtn.FaceId = 343

Quelqu'un peut-il m'aider ?

2 réponses

1 2
Avatar
Don Corleone
ça marche Ange !! Tu es une bête !!!


"Ange Ounis" a écrit dans le message de news:
%
Voici mon code (enfin ce que j'essaye de développer...) :

Set MonBtn2 = CommandBars.FindControl(ID:= _
CommandBars("toto").Controls("macro 2").ID)
MonBtn2.FaceId = 343


Tu te compliques la vie. A partir du moment où tu connais (puisque c'est
toi qui les as créés) le nom de tes boutons et leur index/position (qui
correspond à l'ordre où tu les crées), tu peux changer leur faceid
absolument quand tu le décides. Il n'y a aucune obligation de créer ou
recréer un bouton pour modifier son icône. Je ne comprends pas comment tu
déduis ça des exemples de code qui te sont fournis depuis 2 jours !

Essaye plutôt (à la place du code recopié ci-dessus) :

Application.CommandBars("toto").controls("macro 2").faceid43
ou
Application.CommandBars("toto").controls(2).faceid43

----------
Ange Ounis
----------

Je vais tenter d'être plus précis : Dans le module 1 voici mon code :


Set vmabarre = CommandBars.Add(Name:="toto", Position:=msoBarTop,
temporary:úlse)
vmabarre.Visible = True

'puis on y insère les boutons :
'bouton 1
Set newbouton1 =
CommandBars("toto").Controls.Add(Type:=msoControlButton)
With newbouton1
.Caption = "macro 1"
.FaceId = 342 'image
.BeginGroup = True
.OnAction = "'monfichier.xls'!macro1.macro1"
.Style = msoButtonIconAndCaptionBelow
.TooltipText = "import"
End With

'pour avoir un traite de séparation entre les boutons 1 et 2
BeginGroup = True

'bouton 2
Set newbouton2 =
CommandBars("toto").Controls.Add(Type:=msoControlButton)
With newbouton2
.Caption = "macro 2"
.FaceId = 342 'image
.BeginGroup = True
.OnAction = "'aa outils de ventilation.xls'!macro2.macro2"
.Style = msoButtonIconAndCaptionBelow
.TooltipText = "calculs"
End With


Donc lors de la création, mes deux boutons ont le faceID = 342.


A la fin de mon module 2, après que plein de choses se soient passées
dans le fichier Excel, (il est toujorus ouvert, il n'a pas été fermé et
la barre d'outils est toujours affichée), je souhaite modifier le FaeceID
du bouton 2.

Voici mon code (enfin ce que j'essaye de développer...) :

Set MonBtn2 = CommandBars.FindControl(ID:= _
CommandBars("toto").Controls("macro 2").ID)
MonBtn2.FaceId = 343

Malheureusement, ce code ne détecte pas le bouton et modifie le faceID du
premier bouton qu'il trouve dans la barre toto, c'est à dire le premier.
Et je ne sais pas bien comment lui indiquer de modifier le bouton 2...

voilà, j'espère avoir été plus clair, désolé si mes premiers messages ne
l'ont pas été et merci d'avance aux âmes charitables qui m'aideront...














"Microsoft VBA Excel" a écrit dans le message de news:
u%
Merci, mais là encore, c'est au moment de la création du bouton que le
faceid est spécifié. Pour ma part, je souhaite le modifier après que le
bouton soit créé et qu'il ait déjà un faceID : je souhaite changer le
faceID

Mais je garde ce bout de code pour la prochaine fois et merci !

"Ange Ounis" a écrit dans le message de news:

Est-ce que ça peut te décoincer ?

''''''''''''''''''
Sub CreeBarre3Boutons()
Dim MaBarre As CommandBar
CommandBars("Barre Perso").Delete
Set MaBarre = CommandBars.Add("Barre Perso")
With MaBarre
For i = 1 To 3
MaBarre.Controls.Add(msoControlButton).FaceId = 25
Next
End With
MaBarre.Visible = True
End Sub

Sub ModifBarre3Boutons()
Dim MaBarre As CommandBar
Set MaBarre = CommandBars("Barre Perso")
With MaBarre
For i = 1 To 3
MaBarre.Controls(i).FaceId = 250
Next
End With
MaBarre.Visible = True
End Sub
''''''''''''''''''

----------
Ange Ounis
----------

Voilà, je reviens à la charge n'ayant pas encore trouvé la réponse à
mon problème :

j'ai une barre d'outils avec 3 boutons et je souhaite changer les
images de ces 3 boutons en VBA.

Problème : ça marche pour le premier bouton, mais pas les autres. En
fait, ma procédure ne détecte pas le boutons et change
systématiquement l'image du premier...

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton1)
MonBtn.FaceId = 343

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton2)
MonBtn.FaceId = 343

Quelqu'un peut-il m'aider ?












Avatar
Ange Ounis
ça marche Ange !! Tu es une bête !!!


L'ange et la bête...ça me rappelle vaguement quelque chose :)

----------
Ange Ounis
----------

ça marche Ange !! Tu es une bête !!!


"Ange Ounis" a écrit dans le message de news:
%
Voici mon code (enfin ce que j'essaye de développer...) :

Set MonBtn2 = CommandBars.FindControl(ID:= _
CommandBars("toto").Controls("macro 2").ID)
MonBtn2.FaceId = 343
Tu te compliques la vie. A partir du moment où tu connais (puisque c'est

toi qui les as créés) le nom de tes boutons et leur index/position (qui
correspond à l'ordre où tu les crées), tu peux changer leur faceid
absolument quand tu le décides. Il n'y a aucune obligation de créer ou
recréer un bouton pour modifier son icône. Je ne comprends pas comment tu
déduis ça des exemples de code qui te sont fournis depuis 2 jours !

Essaye plutôt (à la place du code recopié ci-dessus) :

Application.CommandBars("toto").controls("macro 2").faceid43
ou
Application.CommandBars("toto").controls(2).faceid43

----------
Ange Ounis
----------

Je vais tenter d'être plus précis : Dans le module 1 voici mon code :


Set vmabarre = CommandBars.Add(Name:="toto", Position:=msoBarTop,
temporary:úlse)
vmabarre.Visible = True

'puis on y insère les boutons :
'bouton 1
Set newbouton1 =
CommandBars("toto").Controls.Add(Type:=msoControlButton)
With newbouton1
.Caption = "macro 1"
.FaceId = 342 'image
.BeginGroup = True
.OnAction = "'monfichier.xls'!macro1.macro1"
.Style = msoButtonIconAndCaptionBelow
.TooltipText = "import"
End With

'pour avoir un traite de séparation entre les boutons 1 et 2
BeginGroup = True

'bouton 2
Set newbouton2 =
CommandBars("toto").Controls.Add(Type:=msoControlButton)
With newbouton2
.Caption = "macro 2"
.FaceId = 342 'image
.BeginGroup = True
.OnAction = "'aa outils de ventilation.xls'!macro2.macro2"
.Style = msoButtonIconAndCaptionBelow
.TooltipText = "calculs"
End With


Donc lors de la création, mes deux boutons ont le faceID = 342.


A la fin de mon module 2, après que plein de choses se soient passées
dans le fichier Excel, (il est toujorus ouvert, il n'a pas été fermé et
la barre d'outils est toujours affichée), je souhaite modifier le FaeceID
du bouton 2.

Voici mon code (enfin ce que j'essaye de développer...) :

Set MonBtn2 = CommandBars.FindControl(ID:= _
CommandBars("toto").Controls("macro 2").ID)
MonBtn2.FaceId = 343

Malheureusement, ce code ne détecte pas le bouton et modifie le faceID du
premier bouton qu'il trouve dans la barre toto, c'est à dire le premier.
Et je ne sais pas bien comment lui indiquer de modifier le bouton 2...

voilà, j'espère avoir été plus clair, désolé si mes premiers messages ne
l'ont pas été et merci d'avance aux âmes charitables qui m'aideront...














"Microsoft VBA Excel" a écrit dans le message de news:
u%
Merci, mais là encore, c'est au moment de la création du bouton que le
faceid est spécifié. Pour ma part, je souhaite le modifier après que le
bouton soit créé et qu'il ait déjà un faceID : je souhaite changer le
faceID

Mais je garde ce bout de code pour la prochaine fois et merci !

"Ange Ounis" a écrit dans le message de news:

Est-ce que ça peut te décoincer ?

''''''''''''''''''
Sub CreeBarre3Boutons()
Dim MaBarre As CommandBar
CommandBars("Barre Perso").Delete
Set MaBarre = CommandBars.Add("Barre Perso")
With MaBarre
For i = 1 To 3
MaBarre.Controls.Add(msoControlButton).FaceId = 25
Next
End With
MaBarre.Visible = True
End Sub

Sub ModifBarre3Boutons()
Dim MaBarre As CommandBar
Set MaBarre = CommandBars("Barre Perso")
With MaBarre
For i = 1 To 3
MaBarre.Controls(i).FaceId = 250
Next
End With
MaBarre.Visible = True
End Sub
''''''''''''''''''

----------
Ange Ounis
----------

Voilà, je reviens à la charge n'ayant pas encore trouvé la réponse à
mon problème :

j'ai une barre d'outils avec 3 boutons et je souhaite changer les
images de ces 3 boutons en VBA.

Problème : ça marche pour le premier bouton, mais pas les autres. En
fait, ma procédure ne détecte pas le boutons et change
systématiquement l'image du premier...

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton1)
MonBtn.FaceId = 343

Set MonBtn = CommandBars("mabarre").FindControl(, , newbouton2)
MonBtn.FaceId = 343

Quelqu'un peut-il m'aider ?













1 2