Bouton radio en XML pour Excel (ruban)

miloo

XLDnaute Junior
Bonjour,
J'ai suivi le très bon post suivant pour intégrer des boutons Radio à mon ruban Excel:
https://www.excel-downloads.com/threads/resolu-bouton-radio-en-xml-pour-excel-ruban.160313/
Cela fonctionne bien, j'ai même rajouté un troisième bouton radio en suivant la logique de l'exemple, même si je n'ai pas tout compris les macros dans le détail. Je précise que je débute en création de ruban personnalisé et je je manipule un peu les macros et VBA sans être expert.
Cependant je cherche à remplacer le ShapeDonut par une image personnalisée (qui serait en fait un bouton radio vide, mais qui ne semble pas exister dans la liste d'images MSO, le ShapeDonut étant le plus approchant).
Pourriez-vous m'aider?
NB. A l'aide de Custom UI Editor, dans le fichier XML, j'ai déjà inséré des images pour en faire des icônes dans le ruban.
Du coup, de la même manière, j'ai essayé à l'aide de Custom UI Editor d'insérer une image appélée EmptyOptionButton et de la réutiliser dans la macro , c'est à dire returnedVal = "EmptyOptionButton" au lieu de returnedVal = "ShapeDonut" mais cela ne fonctionne pas.
Y a-t-il une solution?

Merci d'avance
 
Dernière édition:

miloo

XLDnaute Junior
Re : Bouton radio en XML pour Excel (ruban)

Bonjour, merci pour la réponse, je vais donc préciser:
J'utilise ces boutons radio pour faire des filtres d'affichage.
Dans mon fichier XML, voici ce que j'ai pour le groupe concerné contenant les boutons radio:
Code:
<group id="Filtres" label="Filtres">
<group id="Filtres" label="Filtres">
<button id="TousProjets" label="Tous Projets" getImage="TousProjets_getImage" onAction="FiltreTousProjets" size="normal" />
<button id="R" label="R" getImage="R_getImage" onAction="FiltreR" size="normal" />
<button id="P" label="P" getImage="P_getImage" onAction="FiltreP" size="normal" />
</group>

dans un module vba, j'ai:
Code:
Public Ruban As IRibbonUI
Public blnRadio(1 To 3) As Boolean

'Callback for customUI.onLoad
Sub objRuban(ribbon As IRibbonUI)
Set Ruban = ribbon
Ruban.ActivateTab "Projets"
blnRadio(1) = True
Ruban.InvalidateControl "TousProjets"
End Sub

'Callback for TousProjets getImage
Sub TousProjets_getImage(control As IRibbonControl, ByRef returnedVal)
If blnRadio(1) Then
  returnedVal = "ActiveXRadioButton"
Else
  returnedVal = "ShapeDonut"
End If
End Sub

'Callback for R getImage
Sub R_getImage(control As IRibbonControl, ByRef returnedVal)
If blnRadio(2) Then
  returnedVal = "ActiveXRadioButton"
Else
  returnedVal = "ShapeDonut"
End If
End Sub

'Callback for P getImage
Sub P_getImage(control As IRibbonControl, ByRef returnedVal)
If blnRadio(3) Then
  returnedVal = "ActiveXRadioButton"
Else
  returnedVal = "ShapeDonut"
End If
End Sub

'Callback for TousProjets onAction
Sub FiltreTousProjets(control As IRibbonControl)
blnRadio(1) = True
blnRadio(2) = False
blnRadio(3) = False
Ruban.InvalidateControl "TousProjets"
Ruban.InvalidateControl "R"
Ruban.InvalidateControl "P"
Application.ScreenUpdating = False
Rows("1:600").Select
Selection.EntireRow.Hidden = False
Cells(1, 1).Select

'--- code de traitement ---

End Sub

'Callback for R onAction
Sub FiltreR(control As IRibbonControl)
Dim Lign As Integer
blnRadio(1) = False
blnRadio(2) = True
blnRadio(3) = False
Ruban.InvalidateControl "TousProjets"
Ruban.InvalidateControl "R"
Ruban.InvalidateControl "P"
Application.ScreenUpdating = False
Rows("1:1000").Select
Selection.EntireRow.Hidden = False
Lign = 1
For Lign = 1 To 600 Step 1
If Cells(Lign, 1) <> "R" And Cells(Lign, 1) <> "" Then
Rows(Lign & ":" & Lign).Hidden = True
End If
Next Lign
Cells(1, 1).Select
'--- code de traitement ---

End Sub

'Callback for P onAction
Sub FiltreP(control As IRibbonControl)
blnRadio(1) = False
blnRadio(2) = False
blnRadio(3) = True
Ruban.InvalidateControl "TousProjets"
Ruban.InvalidateControl "R"
Ruban.InvalidateControl "P"
Application.ScreenUpdating = False
Rows("1:600").Select
Selection.EntireRow.Hidden = False
Lign = 1
For Lign = 1 To 1000 Step 1
If Cells(Lign, 1) <> "P" And Cells(Lign, 1) <> "" Then
Rows(Lign & ":" & Lign).Hidden = True
End If
Next Lign
Cells(1, 1).Select
'--- code de traitement ---

End Sub

voila donc le résultat:
Sans titre 1.jpg

cependant, le graphisme donné par "ShapeDonut" ne me convient pas, ce n'est pas comme un bouton radio vide,
et je voudrais que cela ressemble à cela:
Sans titre 2.jpg

ce bouton radio vide n'existant pas dans les "catalogues" imagesMso, je voulais trouver une manière de le remplacer par une image personnalisée.

j'ai essayé en bidouillant quelque chose qui ressemble à ce que j'ai pu faire pour des images personnalisées dans mon ruban (mais seulement dans le code XML grâce à Custom UI editor, voir image ci-dessous) mais sans succès
Sans titre 3.jpg

Je vous joins mon fichier si cela peut être utile.

Merci d'avance à ceux qui voudront bien se pencher sur mon cas!
 

Pièces jointes

  • Sans titre 1.jpg
    Sans titre 1.jpg
    5.7 KB · Affichages: 53
  • Sans titre 1.jpg
    Sans titre 1.jpg
    5.7 KB · Affichages: 55
  • Sans titre 2.jpg
    Sans titre 2.jpg
    5.5 KB · Affichages: 55
  • Sans titre 2.jpg
    Sans titre 2.jpg
    5.5 KB · Affichages: 52
  • Sans titre 3.jpg
    Sans titre 3.jpg
    81.7 KB · Affichages: 70
  • Sans titre 3.jpg
    Sans titre 3.jpg
    81.7 KB · Affichages: 68
  • Organisation prod v3.3.xlsm
    138.8 KB · Affichages: 55

MJ13

XLDnaute Barbatruc
Re : Bouton radio en XML pour Excel (ruban)

Re


J'ai ouvert ton fichier et je comprend à peu près ce que tu veux.

Mais cela va être difficile, car il semble que l'on peut modifier que des icônes avec des images personnalisées.

Sinon, je ne vois pas :confused:.
 

PMO2

XLDnaute Accro
Re : Bouton radio en XML pour Excel (ruban)

Bonjour,

Une piste avec une grosse bidouille mais c'est ce qui se rapproche le mieux de votre demande.
Changez "ShapeDonut" par "O" (il faut lire la lettre majuscule O comme dans Orange et non pas zéro)

Code:
'Callback for TousProjets getImage
Sub TousProjets_getImage(control As IRibbonControl, ByRef returnedVal)
If blnRadio(1) Then
  returnedVal = "ActiveXRadioButton"
Else
  returnedVal = "O"   '  "ShapeDonut"  '////////
End If
End Sub
 

Pièces jointes

  • Ajouter des boutons Radio dans le ruban Excel en employant la lettre O.xlsm
    19.6 KB · Affichages: 51

miloo

XLDnaute Junior
Re : Bouton radio en XML pour Excel (ruban)

merci à tous les 2 pour vos réponses.
J'avais déjà essayé avec le O qui est aussi un imageMso, mais c'est encore à peine ce que je veux (j'aimerais qu'il y ait l'effet d'ombre que l'on eput voir dans mon image exemple).
Je sais, c'est un peu du pinaillage...
Je reste à l'écoute si quelqu'un a des idées.
MJ13, PMO2, merci encore votre considération.
 

Discussions similaires

Réponses
4
Affichages
796

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG