Microsoft 365 Création d'un nouvel onglet du ruban en vba et y attacher 4 macros complémentaires (MAC et PC)

RyuAutodidacte

XLDnaute Impliqué
Supporter XLD
Bonjour,

j'ai beau chercher partout mais je ne trouve de solution pour le moment …

Comme l'onglet "Acceuil" qui existe dans le ruban, je cherche à pourvoir créer par vba un nouvel onglet "TOTO" et y insérer 4 macros, provenant d'un complément Excel d'un fichier xlam déjà insérer par macro :
VB:
Sub Add_AddIn() 'version Mac (peut être PC aussi pouvez vous confirmer SVP)
Dim addInPath As String
    addInPath = "MonChemin/TEST.xlam"
    AddIns.Add addInPath
    AddIns("TEST").Installed = True '
End Sub
Le but est de pourvoir faire une automatisation d'installation sur plusieurs utilisateurs Mac et PC

merci d'avance pour vos réponses

Ryu
 

patricktoulon

XLDnaute Barbatruc
re
tu adore? 🤣
ben celle là tu va l'adorer encore plus
demo.gif


en gros je n'ai plus besoins de coder
  1. j'ai juste a cliquer pour construire le xml
  2. taper dans les textbox pour modifier les label onaction etc(sinon c'est automatique)
  3. on peut ajouter ou insérer entre deux un élément
  4. on a un visuel(faux treeview pour compatibilité all versions excel)pour le visuel indenté
  5. on a une boite de dialog (faux listview pour compatibilité all versions excel)
  6. on peut sauvegarder un projet et le reprendre plus tard pour continuer ou modifier
  7. on a un module de compilation qui te crée le fichier excel avec le ruban et le module callback
  8. aux callback il y a un commentaire te rappelant ou est ce bouton (comme ça on est pas perdus
  9. et les fichiers xml sont indentés et pas sur une seule ligne
  10. c'est un peu plus rapide que ma version beta 3 de 2020
pour le moment je ne fait que
  • les containers
  1. les group
  2. box verticaux
  3. box horizontaux
  4. buttongroup
  • les controls
  1. les button
  2. togglebutton
  • autres
  1. les séparateurs
 

patricktoulon

XLDnaute Barbatruc
re
non les togglebutton 2 states
mais on peut avec un attribut getlable ou getimageMso et j'en passe fait avec un simple button un toggle a 200 positions si tu veux
mais pour le moment a toi de bien apprendre et comprendre la structure des elements
d'ailleurs pour rappel
on a vu les
la balise tab (onglet)
et il ont comme attribut
id , label ,(pas encore vue mais.. getvisible getenabled , etc...) attention pas d'attribut onAction sinon crash ribbon

la balise group

les attribut même règle que les tab

les box
les attribut même règle que les tab

les buttongroup
les attribut même règle que les tab

les button
label , id, onAction, image, imageMso, size et tout les getblablabla
attention l'attribut size large uniquement quand il est enfant d'un group
quand il est enfant d'un menu pas d'atribut size (on va voir ca on y arrive)


les separator

juste l'attribut id et rien d'autre !!!!!!

si tu ne respecte pas ces règles c'es comme le "xxmlns" 🤣 le rubban ne se crée pas au demarrage d'excel

donc toi tu en est ou là il me semble que tu en etait aux buttongroup c'est ça?
 

patricktoulon

XLDnaute Barbatruc
re
des togglebutton et d'autres dans un buttongroup
comme ca ça te permet de voir que c'est pratique pour aligner
celui ou ils sont horizontal on aurait fait la meme chose avec un box horizontal

XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<customUI xxmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tab-0" label="exemple">
                <group id="group-0" label="3 togglebuttons">
                    <toggleButton id="toggleButton-0" onAction="toggle_0_click" imageMso="ViewFormulaBar"/>
                    <toggleButton id="toggleButton-1" onAction="toggle_1_click" imageMso="WatchWindow"/>
                    <toggleButton id="toggleButton-2" onAction="toggle_2_click" imageMso="XmlExpansionPacksExcel"/>
                </group>
                <group id="group_2" label="4 togglebutton dans ungroupebutton">
                    <buttonGroup id="buttonGroup_0">
                        <toggleButton id="toggle_3" onAction="toggle_3_click" imageMso="Paste"/>
                        <toggleButton id="toggle_4" onAction="toggle_4_click" imageMso="SendCopySelectNames"/>
                        <toggleButton id="toggle_5" onAction="toggle_5_click" imageMso="XmlDataRefresh"/>
                        <toggleButton id="toggle_6" onAction="toggle_6_click" imageMso="VisualBasic"/>
                    </buttonGroup>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

les callback simple(pour l'instant on verra apres pour l'interactivité)
VB:
'Callback pour le toggleButton id :toggleButton-0--> caption : -->dans le group :3 togglebuttons
Sub toggle_0_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggleButton-0 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggleButton-1--> caption : -->dans le group :3 togglebuttons
Sub toggle_1_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggleButton-1 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggleButton-2--> caption : -->dans le group :3 togglebuttons
Sub toggle_2_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggleButton-2 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggle_3--> caption : -->dans le group :4 togglebutton dans ungroupebutton
Sub toggle_3_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggle_3 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggle_4--> caption : -->dans le group :4 togglebutton dans ungroupebutton
Sub toggle_4_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggle_4 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggle_5--> caption : -->dans le group :4 togglebutton dans ungroupebutton
Sub toggle_5_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggle_5 -->caption : "" etat : "& pressed
End Sub

'Callback pour le toggleButton id :toggle_6--> caption : -->dans le group :4 togglebutton dans ungroupebutton
Sub toggle_6_click(control As IRibbonControl,pressed as boolean)
msgbox" vous avez cliqué sur le control : <toggleButton>   toggle_6 -->caption : "" etat : "& pressed
End Sub
 

patricktoulon

XLDnaute Barbatruc
imagine quand on est pas attentif
on essaie 1 fois >10 >20 fois sans jamais trouver
autant pour certaines application le xml mal codé peut passer dans le parsing autant là avec customUI c'est mort

allez le splitbutton maintenant
XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tab-0" label="exemple">
                <group id="group-0" label="les splitButton bouton gros avec texte">
                    <ssplitButton id="splitButton-0">
                        <menu id="Msplitbutton_0" imageMso="MacroPlay" itemSize="large">
                            <button id="button_0" label="boutonX_0" onAction="boutonX_0_click" imageMso="InkingStart"/>
                            <button id="button_1" label="boutonX_1" onAction="boutonX_1_click" imageMso="InkColorPicker"/>
                            <button id="button_2" label="boutonX_2" onAction="boutonX_2_click" imageMso="InkHighlighter" supertip="c'est le 3 eme gros bouton du splitbutton"/>
                        </menu>
                    </splitButton>
                </group>
                <group id="group_2" label="Les splitButton sans texte petits boutons">
                    <splitButton id="splitbutton_1">
                        <menu id="Msplitbutton_1">
                            <button id="button_3" onAction="button_3_Click" imageMso="InkFeltTipPen"/>
                            <button id="button_4" onAction="button_4_Click" imageMso="MoreControlsDialog"/>
                            <button id="button_5" onAction="button_5_Click" imageMso="ReadOnly"/>
                        </menu>
                    </splitButton>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
ATTENTION AU PIEGE !!!

les callback

VB:
'Callback pour le button id :button_0--> caption :boutonX_0 -->dans le group :les splitButton bouton gros avec texte
Sub boutonX_0_click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_0 -->caption : boutonX_0"
End Sub

'Callback pour le button id :button_1--> caption :boutonX_1 -->dans le group :les splitButton bouton gros avec texte
Sub boutonX_1_click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_1 -->caption : boutonX_1"
End Sub

'Callback pour le button id :button_2--> caption :boutonX_2 -->dans le group :les splitButton bouton gros avec texte
Sub boutonX_2_click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_2 -->caption : boutonX_2"
End Sub

'Callback pour le button id :button_3--> caption : -->dans le group :Les splitButton sans texte petits boutons
Sub button_3_Click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_3 -->caption : "
End Sub

'Callback pour le button id :button_4--> caption : -->dans le group :Les splitButton sans texte petits boutons
Sub button_4_Click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_4 -->caption : "
End Sub

'Callback pour le button id :button_5--> caption : -->dans le group :Les splitButton sans texte petits boutons
Sub button_5_Click(control As IRibbonControl)
msgbox" vous avez cliqué sur le control : <button>   button_5 -->caption : "
End Sub
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa