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
 

RyuAutodidacte

XLDnaute Impliqué
re
salut ryu
bon avec mes poupées russes je suis arrivé a une base fonctionnelles
finalement c'est plus simple qu'il n'y parait
j'attends ton projet pour voir un peu ou t'en est pour nous syncroniser
Re Patrick ;)
je sais que je suis sur la bonne voie, mais mon cerveau doit être en bouillie car je patauge dans mes réflexions et pour faire le code (c'est aussi un sujet que j'avais jamais traiter)
Mais j'y crois … j'ai tout les outils qui me le permettent
laisse moi du temps car je code moins vite que toi (ca faisait un gros bon moment que je n'avais pas fait de code) et qu'en semaine pendant mon taf, je n'ai pas vraiment le temps de coder :(
mais ca va venir …
En tout cas je te remercie pour l'aide et l'intérêt que tu y porte ;) 👍

PS : je suis un motivateur de codage 🤣
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
il y a plus simple
imagine les possibilité sont très nombreuses
il te faut séquencer
mais comme je ne sais pas comment tu code il m'est difficile de te dire

et il n'y a pas que les suites
il y a les ensembles aussi aussi nombreux

moi je teste le parent
par exemple que je veux mettre un bouton je fait un like inversé groupé
if " customUI ribbon tabs gallery comboBoxs separator menuSeparator " like"* " (le tagname de l'element que tu veux append &" *" then msgbox "non on ne peux pas faire ça "
VB:
if " customUI ribbon tabs gallery comboBoxs separator menuSeparator " like"* " (le tagname de l'element que tu veux append &" *" then
msgbox "non on ne peux pas faire ça "
end if

regarde avec une classe
demo.gif
 

RyuAutodidacte

XLDnaute Impliqué
il y a plus simple
imagine les possibilité sont très nombreuses
il te faut séquencer
mais comme je ne sais pas comment tu code il m'est difficile de te dire

et il n'y a pas que les suites
il y a les ensembles aussi aussi nombreux

moi je teste le parent
par exemple que je veux mettre un bouton je fait un like inversé groupé
if " customUI ribbon tabs gallery comboBoxs separator menuSeparator " like"* " (le tagname de l'element que tu veux append &" *" then msgbox "non on ne peux pas faire ça "
VB:
if " customUI ribbon tabs gallery comboBoxs separator menuSeparator " like"* " (le tagname de l'element que tu veux append &" *" then
msgbox "non on ne peux pas faire ça "
end if

regarde avec une classe
Regarde la pièce jointe 1174262

en attendant j'aurais bien aimé que tu me donnes qd même des SuiteElems en array pour que tu puisses me piéger et/ou valider ceux qui sont bons comme tu connais bien stp … stp …😎🥺😎🥺😎

et il n'y a pas que les suites
il y a les ensembles aussi aussi nombreux
Oui ben justement j'y tiens compte aussi
tient et en y pensant je crois même que je pourrais faire des messages pour dire ou cela peut aller …
 

patricktoulon

XLDnaute Barbatruc
je viens de faire des tests
je ne pense pas que tester une chaine soit la meilleure idée
j'ai testé sur un button et un menu avec 35 chaines différentes sauf celle qui fallait pour les tests
et des chaines il y en a bien plus que ça
donc forcement c'est une erreur
si tu dois tester des 100 aine de chaines pour insérer un element en espérant que toute les possibilité soient représentées dans les 100 chaines purée ca va être long de faire un ruban avec 3 boutons

je te le redis c'est pas la bonne route
le parent a un tagname tu dois juste tester le tagname parent compatible avec le tagname de l’élément que tu insère
terminé
faut il encore que tu travaille en mode object( ce qui est dans ce cas la meilleure solution) et non en string

le problème en string c'est que 2 possibilités valables sont contradictoires et se shunte l'une l'autre
d'autant plus qu'il y a un effet d'interprétation
la chaine comment doit elle être lue comme une suite ,comme une hiérarchie,comme des possibilité
bref tu t'en sortira pas

avec une classe ou simplement une variable type tu peux faire ce test en une seule ligne
avec une classe
soit avec une collection childs ou array childs
quand tu ajoute tu fait instance de classe parent.childs.add nouvel element mais avant tu teste le me
par exemple pour ajouter un bouton
if not " group box buttonGroup menu dropDown " like "* " & me.tagname &" *" then msgbox "blablabla" :exit (sub ou fonction)
voila avec cette seule ligne si j'ajoute un bouton là ou il faut pas ben..... msgbox

mais faut il encore travailler en mode object ;)
 

patricktoulon

XLDnaute Barbatruc
tiens allez rien que dans la tienne il y a déjà 3 erreurs
et je dirais même qu'a partir de la première tout le reste est en erreur même si une partie ou la totalité du reste est correcte
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")

maintenant une autre
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "menu" , "button", "button", "button", ", "button")
a priori on pourrait croire que c'est bon
sauf que quand tu va passer aux attributs là ça va coincer
devine pourquoi?
 

patricktoulon

XLDnaute Barbatruc
en vert ce qui est bon en rouge ce qui est pas bon
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")

pourtant une partie est bonne
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")
alors rien qu'avec cette ligne imagine les possibilités que l'on traite pas

c'est un truc sans fin ton idée ;)
 

RyuAutodidacte

XLDnaute Impliqué
tiens allez rien que dans la tienne il y a déjà 3 erreurs
et je dirais même qu'a partir de la première tout le reste est en erreur même si une partie ou la totalité du reste est correcte
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")

maintenant une autre

a priori on pourrait croire que c'est bon
sauf que quand tu va passer aux attributs là ça va coincer
devine pourquoi?
Hello
déjà il manque une guillemet :
VB:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "menu", "button", "button", "button", ", "button")
donc on a :
Code:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "menu", "button", "button", "button", "", "button")
et le résultat est faux de base car t 'as rajouté une chaine vide ce qui fait planter la sub car j'avais pas prévu ce cas
Mais je tiens à dire que l'on ne construit pas sans éléments entre 2 éléments et ce cas n'arrivera pas
si on supprime la chaine vide c'est ok

VB:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "menu", "button", "button", "button", "button")
Code:
tab  |  Vrai/Vrai
group  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
menu  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
button  |  Vrai/Faux
button  |  Vrai/Faux

Code:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")
Code:
tab  |  Vrai/Vrai
group  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
tab  |  Faux/Faux
button  |  Faux/Faux
separator  |  Faux/Faux
button  |  Faux/Faux

Code:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "tab", "button", "separator", "button")
Code:
tab  |  Vrai/Vrai
group  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
tab  |  Faux/Faux
button  |  Faux/Faux
separator  |  Faux/Faux
button  |  Faux/Faux

Code:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "button", "button", "group", "button", "item", "button")
Code:
tab  |  Vrai/Vrai
group  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
group  |  Faux/Vrai
button  |  Vrai/Faux
item  |  Faux/Faux
button  |  Faux/Faux
 

patricktoulon

XLDnaute Barbatruc
re
non c'est faux/faux à l'endroit indiqué
1688987997610.png

et c'est pas peine de vous avoir fait des videos
 

RyuAutodidacte

XLDnaute Impliqué
re
non c'est faux/faux à l'endroit indiqué
Regarde la pièce jointe 1174285
et c'est pas peine de vous avoir fait des videos
Donc concernant la doc MS pour le splitButton j'ai mal compris ???
1688989414460.png


lien splitButton
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
VB:
SuiteElems = Array("tab", "group", "button", "button", "splitButton", "menu", "button", "button", "splitButton", "menu", "button", "button")
Code:
tab  |  Vrai/Vrai
group  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
menu  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
splitButton  |  Vrai/Vrai
menu  |  Vrai/Vrai
button  |  Vrai/Faux
button  |  Vrai/Faux
 

Statistiques des forums

Discussions
315 131
Messages
2 116 571
Membres
112 789
dernier inscrit
Makatay_45