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é
il y a encore un soucis avec ton box vertical me semble t il non ?
lequel ? car il me semble que c'est ok .... ?
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="LES BOUTONS">
                <group id="group-0" label="GROUP1">
                    <button id="button_0" onAction="Button_1_click" label="Button 1" imageMso="Clear" size="large"/>
                        <separator id="sep_1"/>
                    <button id="button_1" onAction="Button_2_click" label="Button 2" imageMso="ListMacros" size="large"/>
                        <separator id="sep_2"/>
                    <button id="button_2" onAction="Button_3_click" label="Button 3" imageMso="TableSelect" size="large"/>
                </group>
                <group id="group-1" label="GROUP2">
                    <box id="boxV_0" boxStyle="vertical">
                        <button id="button_3" onAction="blablabla_click" imageMso="Lock"/>
                    </box>
                    <box id="boxV_1" boxStyle="vertical">
                        <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-2" label="GROUP3">
                    <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"/>
                        <button id="button_10" onAction="boutonX_10_click" imageMso="FileCheckOutDiscard"/>
                        <button id="button_11" onAction="boutonX_11_click" imageMso="TableConvertToRange"/>
                    </box>
                    <box id="boxH_3" boxStyle="horizontal">
                        <button id="button_12" onAction="button_12_Click" imageMso="SendCopySendToMailRecipient"/>
                        <button id="button_13" onAction="button_13_Click" imageMso="XmlExpansionPacksExcel"/>
                        <button id="button_14" onAction="button_14_Click" imageMso="UpgradeWorkbook"/>
                    </box>
                    <box id="boxH_4" boxStyle="horizontal">
                        <button id="button_15" onAction="button_15_Click" imageMso="SendCopySendToMailRecipient"/>
                        <button id="button_16" onAction="button_16_Click" imageMso="XmlExpansionPacksExcel"/>
                        <button id="button_17" onAction="button_17_Click" imageMso="UpgradeWorkbook"/>
                        <button id="button_18" onAction="button_18_Click" imageMso="MacroRecord"/>
                        <button id="button_19" onAction="boutonX_10_click" imageMso="FileCheckOutDiscard"/>
                    </box>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
 

patricktoulon

XLDnaute Barbatruc
relis bien la demande je met en rouge au cas ou
les box horizontaux visiblement c'est bons
 

patricktoulon

XLDnaute Barbatruc
re
dis moi pourquoi je te demanderais de mettre un box vertical avec un seul boutons

autant le mettre simplement alors comme ca dans le groupe a la suite avant le box vertical N°2

bon dans tout les cas je pense que tu a compris
les boutons(large/small)
les box (verticaux ou horizontaux)
les buttongroup

si tu a des choses que tu n'a pas compris avant d'aller plus loin dis le moi
dans tout les cas ne t'inquiete pas je te fournirais les exemples que l'on a déjà vu
 

patricktoulon

XLDnaute Barbatruc
re
allez on passe aux toglebutton maintenant
il ont la propriété du double state
c'est a dire un peu a l'instar d'un checkbox préssé ou non préssé
je te donne les callback avec pour tester

le xml
XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<customUI xxmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="tab-0" label="exemple">
                <group id="group-0" label="mes toglebuttons">
                    <toggleButton id="toggle_0" onAction="toggle_0_click" imageMso="ViewFormulaBar"/>
                    <toggleButton id="toggle_1" onAction="toggle_1_click" imageMso="WatchWindow"/>
                    <toggleButton id="toggle_2" onAction="toggle_2_click" imageMso="XmlExpansionPacksExcel"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

les callback
VB:
'Callback pour le toggleButton id :toggle_0--> caption : -->dans le group :mes toglebuttons
Sub toggle_0_click(control As IRibbonControl, pressed As Boolean)
MsgBox " vous avez cliqué sur le control : <toggleButton>   toggle_0 -->caption : il est " & pressed
End Sub

'Callback pour le toggleButton id :toggle_1--> caption : -->dans le group :mes toglebuttons
Sub toggle_1_click(control As IRibbonControl, pressed As Boolean)
MsgBox " vous avez cliqué sur le control : <toggleButton>   toggle_1 -->caption : il est " & pressed
End Sub

'Callback pour le toggleButton id :toggle_2--> caption : -->dans le group :mes toglebuttons
Sub toggle_2_click(control As IRibbonControl, pressed As Boolean)
MsgBox " vous avez cliqué sur le control : <toggleButton>   toggle_2 -->caption : il est " & pressed
End Sub
 

RyuAutodidacte

XLDnaute Impliqué
Re Patrick,
Je ne comprends pas, je l'ai refait plusieurs fois en insérant ton xml et je ne vois pas apparaitre l'onglet exemple ... y a t il qq chose qui m'a échappé, ou tu m'as posé un piège
 

Pièces jointes

  • MyToggleButton.xlsm
    18 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
re
oui il y avait un piège

regarde bien

il faut être attentif a tout

j'ai bien avancer dans mon nouveau ribbon creator
sauf que maintenant le xml et les callback sont créer et a la sortie le fichier est fonctionnel
j'ai utilisé une autre méthode
purée j'ai passé plus de 7 heures dessus
 

RyuAutodidacte

XLDnaute Impliqué
oui il y avait un piège

regarde bien

Re
je devais plus voir clair après ma journée de taf

Dis moi quelle est la différence entre "<?xml version="1.0" encoding="UTF-8" standalone="no"?>" et "<?xml version="1.0" encoding="UTF-8" standalone="yes"?>" pour les ribbons ? Y a t il une incidence sur le résultat du ribbon ou non, ou cela joue t il dans les paramètres du xlsm ?

question supp en rapport avec les Xlsm Ribbon créés pour devenir des xlam et donc aussi le sujet de mon post :
je me retrouve à devoir installé les xlam sur des PC à distance en prenant la mains dessus pour mon taf.

1er problème : je vais avoir des PC de collègues dans des filiales et leur PC vont être dans leur langue natale
donc pour cela j'ai créé une procédure :
VB:
Sub InstallXLAM()
Dim GetXLAM$, XLAM_Name$, Sep, MyFolders, MyUserNamePC$, i As Byte, CheckFolders$, PathDestination$

    GetXLAM = Application.GetOpenFilename()
    XLAM_Name = Mid(GetXLAM, InStrRev(GetXLAM, "\") + 1)
   
    Sep = Application.PathSeparator
    MyFolders = Array("MACROS COMPLEMENTS", "MACROS COMPLEMENTS" & Sep & "MACROS INDEX")
    MyUserNamePC = Environ("userprofile")
   
    For i = LBound(MyFolders) To UBound(MyFolders)
        CheckFolders = MyUserNamePC & "\Documents\" & MyFolders(i) & Sep
        If Len(Dir(CheckFolders, vbDirectory)) = 0 Then
            MkDir CheckFolders
        End If
    Next
   
    PathDestination = MyUserNamePC & "\Documents\" & MyFolders(1) & Sep & XLAM_Name
   
    If GetXLAM Like "*" & ".xlam" Then
        On Error GoTo myError
        FileCopy GetXLAM, PathDestination
        Application.AddIns.Add PathDestination
        AddIns(Split(XLAM_Name, ".")(0)).Installed = True
    End If
    Exit Sub
myError:
    MsgBox "This xlam file exist already and is opened on Excel Addins"
End Sub
Le problème, c'est que je ne peux pas forcément lancer la procédure à cause des paramètres de sécurité.
Je ne suis pas du tout habitué aux paramètre de sécurité PC afin que ma macro puisse marcher pour l'installation Peux tu m'aider à ce sujet ? stp

2ème problème : comment être sûr, sur PC, qu'une fois mon xlam installé, celui marche correctement sans être entravé par les paramètres de sécurité dans les options d'Excel PC ???

Le fichier sans l'erreur
 

Pièces jointes

  • MyToggleButton.xlsm
    18 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
re
je te l'ai dis déjà
le standalone =yes c'est pour que l'application choisisse le bon customUI.xml toute seule comme une grande
comme ça c' est compatible de 2007 à 2021

après pour le xla j'en sais rien
si il est installé et que la securité ne bloque pas les macros il ne devrait pas y avoir de soucis
 

patricktoulon

XLDnaute Barbatruc
regarde je suis sur la partie compilation
je fait comme ca pour pas bousiller mon travail sur l'interface
avec mon interface je crée les xml
et maintenant il faut que je greffe ceci (nouvelle méthode)
regarde
rien n'existe au départ et a l'arrivée on a notre fichier avec ruban avec le module des callback intégrés

 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…