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é
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
attend je regarde ton fichier

ensuite regarde cette capture di mois tu préfère celui d'en haut ou en bas
j'ai simplement mis un séparateur entre les boutons(celui d'en bas)

1685608627827.png


allez je regarde ton fichier ;)
;)
 

patricktoulon

XLDnaute Barbatruc
re

C'est ok maintenant ...
PS : Si j'ai bien compris le fichier zip faut jamais le dézipper mais aller à l'intérieur ??
a ben ça dépends si tu le sent mieux en dezipant pourquoi pas

on procéderait comme suit
  1. tu change l'extention du fichier excel en ZIP(il devient une archive zip)
  2. tu crée un dossier sur ton bureau( appelle le par exemple "projet ribbon")
  3. ouvre l'archive et fait tout glisser dans le dossier project ribon
  4. tu peux vider l'archive( pas la supprimer hein !!)
  5. ferme l'archive(on en a plus besoins pour le moment)
  6. ouvre ton dossier project ribbon
  7. va dans le dossier "_rels"
  8. ouvre le *.rels.xml
  9. ajoute lui les deux lignes (bien mettre les deux lignes DANS la balise RelationshipS)
  10. enregistre les modif
  11. ajoute un dossier customUI dans le dossier project ribbon
  12. glisse les deux customUI.xml dans ce dossier(je dis bien le dossier customUI)
  13. une fois fait tu rouvre l'archive tu ouvre la fenêtre du dossier project en même temps
  14. et tu re glisse tout du dossier project ribbon vers l'archive
  15. ferme tout
  16. remet la bonne extension "zip" to "xlsm"
  17. terminé
ton fichier est opérationnel
voila entraine toi a faire ca plusieurs fois
apres on verra les callback(les macro associé aux boutons )

quand tu saura faire sans te tromper on attaquera les divers controls dans le ruban
bouton petit ou grand
groupe de bouton horizontal vertical avec caption ou sans
menu
menu en cascade
menuseparator
gallery
combobox
menu avec gallery
separtor menu separator etc..

et aussi leur attribut permettant une interactivité a double sens
on attaquera aussi la possibilité de mettre des icons perso aussi
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Re
Ok il y a des dossiers et fichiers supp + un group supp pour la balise <menu ....
1685643363942.png

XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tab-0" label="mes moutons et mon ane ">
                <group id="group-0" label="les voici">
                    <button id="button_0" onAction="mouton_1_click" label="mouton 1" image="Image0" size="large"/>
                    <separator id="sep_1"/>
                    <button id="button_1" onAction="mouton_2_click" label="mouton 2" image="Image1" size="large"/>
                    <separator id="sep_2"/>
                    <button id="button_2" onAction="mouton_3_click" label="mouton 3" image="Image2" size="large"/>
                    <separator id="sep_3"/>
                    <button id="button_3" onAction="bourico_click" label="bourico" image="Image3" size="large"/>
                </group>
                <group id="group_2" label="la ils sont en menu ">
                    <menu id="menu_0" label="menuX_0">
                        <button id="button_4" label="mouton 1" onAction="mouton_1_click" image="Image4"/>
                        <button id="button_5" label="mouton 2" onAction="mouton_2_click" image="Image5"/>
                        <button id="button_6" label="mouton 3" onAction="mouton_3_click" image="Image6"/>
                        <button id="button_7" label="mon ane " onAction="mon_ane_click" image="Image7"/>
                    </menu>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
voila et ce n'est qu'un début
c'était juste pour te montrer que ca va ce compliquer un peu
pour le moment on va aller doucement
on va bien maitriser les simples sans images perso avec la modif dans le rel et le customUI
tu va en faire ,en faire , en faire , a ne plus finir jusqu’à ce ça soit totomatic
je te prépare une liste de msoimage comme ca tu pourra choisir parmi un sacré paquet d’icône

alors prochain exercice (et la je te dis plus rien
je veux 4 boutons un autre icône un autre nom une autre macro
je te laisse faire ;)

et livre moi le xslm ;)
 

patricktoulon

XLDnaute Barbatruc
Bonjour ryu
bon ben ça semble correct
donc on peut considérer que pour faire un ribbon ( mano mano) avec des icons office excel tu sais où vont les fichiers xml

tu l'a bien compris les attributs de base des boutons sont
  1. id : (qui doivent être absolument unique!!)un doublon et c'est fini le ruban ne fonctionne pas
  2. label: (facultatif !!!c'est le texte du bouton)
  3. imageMso: (icon)
  4. onaction : (nom de la macro affectée en callback)
  5. size: (large ou small (le small est facultatif puisque considéré par defaut ))
on verra pour les autres attributs plus tard

voici un xml ajoute les attributs manquants y compris pour la balise customUI et fait moi un fichiers avec les deux customUI et macro callback

VB:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI>
    <ribbon startFromScratch="false">
        <tabs>
            <tab visible="true"  label="onglet0">
                <group id="group_1" >
                          <button id="button_0"  imageMso="MacroPlay"/>
                        <button  onAction="button_1_Click" imageMso="WatchWindow"/>
                        <button id="button_2" onAction="button_2_Click" />
                        <button  onAction="button_3_Click" />
                  </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

ensuite on va passer aux autre controls et groupe de controls

bon exercice ;)
 

RyuAutodidacte

XLDnaute Impliqué
Bonjour ryu
bon ben ça semble correct
donc on peut considérer que pour faire un ribbon ( mano mano) avec des icons office excel tu sais où vont les fichiers xml

tu l'a bien compris les attributs de base des boutons sont
  1. id : (qui doivent être absolument unique!!)un doublon et c'est fini le ruban ne fonctionne pas
  2. label: (facultatif !!!c'est le texte du bouton)
  3. imageMso: (icon)
  4. onaction : (nom de la macro affectée en callback)
  5. size: (large ou small (le small est facultatif puisque considéré par defaut ))
on verra pour les autres attributs plus tard

voici un xml ajoute les attributs manquants y compris pour la balise customUI et fait moi un fichiers avec les deux customUI et macro callback

VB:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI>
    <ribbon startFromScratch="false">
        <tabs>
            <tab visible="true"  label="onglet0">
                <group id="group_1" >
                          <button id="button_0"  imageMso="MacroPlay"/>
                        <button  onAction="button_1_Click" imageMso="WatchWindow"/>
                        <button id="button_2" onAction="button_2_Click" />
                        <button  onAction="button_3_Click" />
                  </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

ensuite on va passer aux autre controls et groupe de controls

bon exercice ;)
Et voilà ;)
 

Pièces jointes

  • RibbonExo.xlsm
    18 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
re
bon donc maintenant on considère que tu fait ça automatiquement sans réfléchir(quasiment hein )

donc on va rester dans le simple donc des boutons mais là on va parler d'alignement avec des petits boutons
on va donc parler de balise box et buttongroup

les box servent a aligner les bouton verticalement ou horizontalement
en effet il arrive que le texte des bouton soit plus ou moins long dans les bouton et l'alignement s'en trouve pas très esthétique quand on a des longeurs de texte différents
car en effet si on met plusieurs boutons ale suite avec longueur de texte différent
comme il se place automatiquement sur 3 lignes et X colonnes
la balise box a un argument de sens (vertical ou horizontal)
autrement dit on peut aligner 6 boutons sur 2 colonnes même si les texte des boutons ne sont pas les même

il permet aussi d'aligner des petits boutons ou autres sur la même ligne
il permet aussi de faire des colonnes de deux boutons puis une colonne de trois sans que le 1er de la colonne 2 vienne se mettre en 3 ligne de la colonne 1
dans cet exemple je met des séparateurs pour que tu visualise bien dans le 1er groupe

allez c'est parti
1685796494341.png


le code xml
XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
                    <tab id="tab-0" label="onglet0">
                <group id="group-0" label="box  vertical">
                    <box id="boxV_0" boxStyle="vertical">
                        <button id="button_0" label="blablabla" onAction="blablabla_click" imageMso="Lock"/>
                        <button id="button_1" label="blablablablabla" onAction="blablablablabla_click" imageMso="SheetDelete"/>
                        <button id="button_2" label="blabla" onAction="blabla_click" imageMso="HeaderFooterFilePathInsert"/>
                    </box>
                    <separator id="sep_1"/>
                    <separator id="sep_2"/>
                    <box id="boxV_1" boxStyle="vertical">
                        <button id="button_3" onAction="button_3_Click" imageMso="ActiveXRadioButton"/>
                        <button id="button_4" onAction="button_4_Click" imageMso="RecolorColorPicker"/>
                        <button id="button_5" onAction="button_5_Click" imageMso="WindowRestore"/>
                    </box>
                </group>
                <group id="group-1" label="box horizontal sans texte">
                    <box id="boxH_2" boxStyle="horizontal">
                        <button id="button_6" onAction="button_6_Click" imageMso="SendCopySendToMailRecipient"/>
                        <button id="button_7" onAction="button_7_Click" imageMso="XmlExpansionPacksExcel"/>
                        <button id="button_8" onAction="button_8_Click" imageMso="UpgradeWorkbook"/>
                        <button id="button_9" onAction="button_9_Click" imageMso="MacroRecord"/>
                    </box>
                </group>
                <group id="group_3" label="box horizontal avec texte">
                    <box id="boxH_3" boxStyle="horizontal">
                        <button id="button_10" label="boutonX_10" onAction="boutonX_10_click" imageMso="FileCheckOutDiscard"/>
                        <button id="button_11" label="boutonX_11" onAction="boutonX_11_click" imageMso="TableConvertToRange"/>
                        <button id="button_12" label="boutonX_12" onAction="boutonX_12_click" imageMso="GetExternalDataFromAccess"/>
                        <button id="button_13" label="boutonX_13" onAction="boutonX_13_click" imageMso="GetExternalDataFromWeb"/>
                    </box>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
allez crée moi ce fichier mais laisse tomber les callback , je pense que ça t a bien compris comment ca marche ;)
 

Statistiques des forums

Discussions
315 111
Messages
2 116 340
Membres
112 721
dernier inscrit
Ulricn