XL 2019 Création Macro pr modifier les options Excel

looky62

XLDnaute Occasionnel
Bonjour
J'aimerais savoir s'il est possible de modifier dynamiquement certaines options de excel avec du VBA (par exemple pour mes collègues novices, modifier le ruban personnalisé)

Si oui, comment ?
Merci d'avance
 

patricktoulon

XLDnaute Barbatruc
Bonjour
par vba on crée pas un new onglet dans le ruban mais on peut par "rétrocompatibilité" créer des commandbars dans le ruban qui créera un onglet nommé par défaut "complement "
cette commandbar peut etre créée a l'ouverture d'un fichier et supprimée à sa fermeture
c'est moins fun qu'un onglet de ruban (icon petits et difficile à organiser en groupe) mais fonctionnel
pratique quand on veut pas affublé le fichier de 36 userforms ou autres interfaces
 

patricktoulon

XLDnaute Barbatruc
re
et bien je me suis fourvoyé en étant aussi affirmatif en disant que ce n’était pas possible de charger un ribbon dynamiquement par vba
en effet OUI!!! c'est possible
etant moi meme l'auteur d'un customui editor perso pour faire des ribbon perso en quelques click
j'en ai même honte tellement c'est simple
en fait il faut charger la copie system du fichier (exportedUI)
je dis bien!!! la copie system
dans un endroit très précis

je ferais bien un toto sur la question moi
ca marche du tonnerre :D

juste pour la demo comme ca vite fait

voici un fichier exportedui vite fait comme ca avec 3 macro toute simple
ce fichier est créé quand vous exportez (MANUELLEMENT) votre onglet perso (personnalilation du ruban)
je conseille fortement de supprimer le chemin racine dans le code xml
XML:
<mso:cmd app="Excel" dt="1" />
<mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
<mso:ribbon>
<mso:qat/>
<mso:tabs>
<mso:tab id="mso_c1.A733DF" label="mes macro" insertBeforeQ="mso:TabAddIns">
<mso:group id="mso_c2.A733DF" label="groupe1" imageMso="FormulaMoreFunctionsMenu" autoScale="true">
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test1_0_E99D4C" label="test1" imageMso="ListMacros" onAction="C:\Users\patrick\Desktop\classeurtestcustomuidynamique.xlsm!test1" visible="true"/>
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test2_1_E99D4C" label="test2" imageMso="ListMacros" onAction="C:\Users\patrick\Desktop\classeurtestcustomuidynamique.xlsm!test2" visible="true"/>
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test3_2_E99D4C" label="test3" imageMso="ListMacros" onAction="C:\Users\patrick\Desktop\classeurtestcustomuidynamique.xlsm!test3" visible="true"/></mso:group></mso:tab>
</mso:tabs>
</mso:ribbon>
</mso:customUI>

une fois chargé l'application créer une copie de ce fichier dand les entrailles de dossier windows(quelque part "shut!!!!"
et voici le fichier copiesystem
XML:
<mso:customUI xmlns:x1="http://schemas.microsoft.com/office/2009/07/customui/macro" xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui">
<mso:ribbon>
<mso:qat/>
<mso:tabs>
<mso:tab id="mso_c1.A733DF" label="mes macro" insertBeforeQ="mso:TabAddIns">
<mso:group id="mso_c2.A733DF" label="groupe1" imageMso="FormulaMoreFunctionsMenu" autoScale="true">
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test1_0_E99D4C" label="test1" imageMso="ListMacros" onAction="classeurtestcustomuidynamique.xlsm!test1" visible="true"/>
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test2_1_E99D4C" label="test2" imageMso="ListMacros" onAction="classeurtestcustomuidynamique.xlsm!test2" visible="true"/>
<mso:button idQ="x1:C:_Users_patrick_Desktop_classeurtestcustomuidynamique.xlsm_test3_2_E99D4C" label="test3" imageMso="ListMacros" onAction="classeurtestcustomuidynamique.xlsm!test3" visible="true"/>
</mso:group>
</mso:tab>
</mso:tabs>
</mso:ribbon>
</mso:customUI>

comme vous voyez il est tres ressemblant mais avec quelques petites différences

il suffit de stoker quelque part ce fichier
et de l'injecter dans un des dossiers des entrailles de Windows
( tout du moins une copie sous un nom précis!!)pour activer l'onglet perso ou modifier le ruban selon comment pour l'avez personnalisé dans le xml
démonstration

demo.gif

:)
 

Discussions similaires