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é
tiens teste ce sample
le résultat à l'ouverture :
1723151404606.png
 

RyuAutodidacte

XLDnaute Impliqué
j'avais pas mis les callback qd je t'ai donné le fichier, c'était juste pour tester sur nouveau fichier que j'ai enregistrer sous en xlsm nommé TEST puis transformer en zip
et à partir de là, pour tester j'ai tout fait dans applescript et le terminal pour creér le .rels et l'insérer directement dans le zip … j'ai juste récupérer le dossier customUI d'un projet pour aussi l'insérer directement dans le zip (il n y a pas eu de dezipage)

sinon en passant par le creator j'y ai mis les callbacks onAction et c'est ok sur le projet exemple dont je me suis servi
 

patricktoulon

XLDnaute Barbatruc
je crois que c'est pas la peine de tennuyer maintenant que j'ai tout mis en utf 8 on peut se contenter de garder mon system
creation xlsm--> convert zip--> extraction total dans projetUI
--> salade et mayonnaise -->on renvoie tout dans le zip--> reconversion en xlsm

et non tes callbaxk ne sont pas en utf-8 les accents sont transformés il ne marchent donc pas les bouton ne trouvent pas leurs sub
1723153617332.png

1723153693096.png


à l'inverse chez moi fait avec le creator
demo1.gif
 

patricktoulon

XLDnaute Barbatruc
allez arrête de te torturer j'"ai trouvé plus simple
on peut supprimer les accents du vbe en gardant ceux dans le customUI
change la sub changeCallback et on en parle plus ;)
1723155678862.png


VB:
'procedure {onAction} du bouton [ID:''button_72'' Label:''change onAction'']'dans le parent [groupecallback'' Label:''LES CALLBACKS'']
Sub ChangeCallback(control As IRibbonControl)
    Dim s, T$, defc$, newdefc$, noAccLab$, tb, tb2, i&
    If DocXml Is Nothing Then MsgBox "La variable docXml est vide veuillez redemerer le projet": Exit Sub
    tb = Split("é,ç,è,à,ô,û,ê", ","): tb2 = Split("e,c,e,a,o,u,e", ",")
    noAccLab = MyElement.GetAttribute("label")
    For i = 0 To UBound(tb): noAccLab = Replace(noAccLab, tb(i), tb2(i)): Next
    T = control.Tag
    Set MyElement = DocXml.getElementById(id:=[c3].Value)
    If Not MyElement Is Nothing Then

        If DocXml.AdmissibleCallback(T, MyElement) = True Then
            defc = MyElement.GetAttribute(T)
            If defc = "" Then defc = noAccLab & "_" & T
            newdefc = InputBox("changer ou modifier le CallBack : " & T, "Modifier un CallBack", defc)
            If newdefc <> "" Then
                MyElement.SetAttribute T, Replace(newdefc, " ", "_")
                Else: MyElement.RemoveAttribute (T)
            End If
        Else
            MsgBox "Ce CallBack n'est pas addmis pour cet element ou dans ce contexte"
        End If
    End If
    miseAjourTableAttribut MyElement
End Sub
 

patricktoulon

XLDnaute Barbatruc
RE
VB:
'procedure {onAction} du bouton [ID:''button_72'' Label:''change onAction'']'dans le parent [groupecallback'' Label:''LES CALLBACKS'']
Sub ChangeCallback(control As IRibbonControl)
    Dim s, T$, defc$, newdefc$, noAccLab$, tb, tb2, i&
    If DocXml Is Nothing Then MsgBox "La variable docXml est vide veuillez redemerer le projet": Exit Sub
    tb = Split("è,È,ê,Ê,î,Î,â,Â,ô,Ô,û,Û,ë,Ë,ï,Ï,ü,Ü,ç,Ç,æ,Æ", ","): tb2 = Split("e,E,e,E,o,I,a,A,p,O,u,U,e,E,i,I,u,U,c,C,ae,oe", ",")
    noAccLab = MyElement.GetAttribute("label")
    For i = 0 To UBound(tb): noAccLab = Replace(noAccLab, tb(i), tb2(i)): Next
    T = control.Tag
    Set MyElement = DocXml.getElementById(id:=[c3].Value)
    If Not MyElement Is Nothing Then

        If DocXml.AdmissibleCallback(T, MyElement) = True Then
            defc = MyElement.GetAttribute(T)
            If defc = "" Then defc = noAccLab & "_" & T
            newdefc = InputBox("changer ou modifier le CallBack : " & T, "Modifier un CallBack", defc)
            If newdefc <> "" Then
                MyElement.SetAttribute T, Replace(newdefc, " ", "_")
                Else: MyElement.RemoveAttribute (T)
            End If
        Else
            MsgBox "Ce CallBack n'est pas addmis pour cet element ou dans ce contexte"
        End If
    End If
    miseAjourTableAttribut MyElement
End Sub
 

Statistiques des forums

Discussions
315 105
Messages
2 116 260
Membres
112 704
dernier inscrit
zanda19