Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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é
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



à l'inverse chez moi fait avec le creator
 

patricktoulon

XLDnaute Barbatruc
le pourquoi tu le sais Mac travail tout en UTF-8
a moins que tu ai changer quelque chose dans l’écriture du vbcomp sinon je m'arrange pour supprimer tout les accents automatiquement lors de la creation du module callback du fichier en creation ca sera plus simple
 

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


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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…