Microsoft 365 Création d'un nouvel onglet du ruban en vba et y attacher 4 macros complémentaires (MAC et PC)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
re
voici le module nommé "Modul_CreateXLfileMac" qui est dédié à ta partie
VB:
'****************************************************************************************************
'    __    _  _  _   _   _       _   _ _______  ___     ___     _  ___     _       ____ _______ ____
'   // \\ // // //  //  /\\     //  //   //    //  \\  // ||   // // ||   /\\     //      //   //
'  //__// \\// //  //  //__\   //  //   //    //   // //  ||  // //  ||  //__\   //      //   //__
' //  \\   // //  //  //   \\ //  //   //    //   // //   // // //   // //   \\ //      //   //
'//   //  // //__//  //    ////__//   //     \\__// //___// // //___// //    ////___   //   //___
'
'responsable et concepteur [operating System]du module "Modul_CreateXLfileMac"
'
'****************************************************************************************************
'Public modecreation
Sub createmacfichXL()

    Dim VBComp, cbBack, Codxml

    Dim SampleC$, SampleZIP, ProjetUI, Oapp, x&, i&, f
    Dim Cod$, Q14, elem, FolderCustomUI

    'chemin des dossiers et fichier
    SampleC = ThisWorkbook.Path & Application.PathSeparator & "Sample.xlsm"
    SampleZIP = ThisWorkbook.Path & Application.PathSeparator & "Sample.Zip"
    ProjetUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI" 'dossier de dezipage temporaire
    FolderCustomUI = ThisWorkbook.Path & Application.PathSeparator & "customUI"

    If Dir(FolderCustomUI, vbDirectory) = vbNullString Then MkDir FolderCustomUI
    If Dir(SampleZIP) <> "" Then Kill SampleZIP: Do While Dir(SampleZIP) <> "": DoEvents: Loop
    If Dir(SampleC) <> "" Then Kill SampleC: Do While Dir(SampleC) <> "": DoEvents: Loop

    'creation du dossier de desipage temporaire
    If Dir(ProjetUI, vbDirectory) = vbNullString Then MkDir ProjetUI: Do While Dir(ProjetUI, vbDirectory) = vbNullString: DoEvents: Loop

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    cdback = DocXml.generateCallBack
    
    'SI JE CLIK SUR CREATION
    If modecration = 1 Then
        Set wbk = Workbooks.Add
    Else 'sinon
        'boite de dialogue ici pour choisir un fichier [*.xls*] avec gestion d'annulation bien entendu
        ' la variable F  CONTIENT LE CHEMIN DU FICHIER  S2LECTIONN2
        Set wbk = Workbooks.Open(f)
    End If

'une fois le fichier excel ouvert on lui met le module callback et son code
    Set VBComp = wbk.VBProject.VBComponents.Add(1)
    VBComp.Name = "Modul_CallBack"
    VBComp.CodeModule.InsertLines 1, cdback
    DoEvents
    ActiveWorkbook.SaveAs Filename:=SampleC, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    Workbooks("Sample.xlsm").Close

    'gestion d'attente pour laisser Mac (ordinateur pour fille) le temps de bien créer le fichier
    Do While Dir(SampleC) = "": DoEvents: Loop

    Name SampleC As SampleZIP 'conversion en fichier ZIP

    'gestion d'attente pour laisser Mac (ordinateur pour fille) le temps de bien faire la conversion
    Do While Dir(SampleZIP) = "": DoEvents: Loop

'//////////////////////////////////////////////////////////////////
'MAINTENANT TU DEZIPPE ICI dans ProjetUI !!!!!!!
'ton applescript de dezippage ici!!!!!

'//////////////////////////////////////////////////////////////////

'apres dezippage tout se trouve dans le dossier projetUI

'on commence par modifier le customUI.xml
   'creation du dossier customui dazns projetUI
   MkDir ProjetUI & Application.PathSeparator & "customUI"
    'intégration
    Codxml = DocXml.GenerateXml
    Codxml = "<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>" & vbCrLf & Codxml
    MacSaveXmlFileUTF_8 Codxml, ProjetUI & Application.PathSeparator & "customUI" & Application.PathSeparator & "customUI14.xml"


'ENSUITE
 'modification du fichier rels
    x = FreeFile: Open ProjetUI & "\_rels\.rels" For Input As #x: Cod = Input$(LOF(x), #x): Close #x
    Q14 = "<Relationship Id=""custo14"" Type=""http://schemas.microsoft.com/office/2007/relationships/ui/extensibility"" Target=""customUI/customUI14.xml""/>"
    Cod = Replace(Cod, "</Relationships>", Q14 & vbCrLf & "</Relationships>")
    MacSaveXmlFileUTF_8 Cod, ProjetUI & Application.PathSeparator & "_rels" & Application.PathSeparator & ".rels"


'IL NE TE RESTE PLUS QU'A REZIPPER LE TOUT

'et enfin reconversion du zip en xlsm
 Name SampleZIP As SampleC

    MsgBox "Creation du classeur ""Sample.XLSM"" éffectuée"
   
   'suppression du dossier "projetUI" on en a plus besoins
    RmDir ProjetUI

End Sub
 
Dernière édition:
Hi
qq palettes couleurs pour les couleurs dans la feuilles :

1721558765881.png
 
re
XML:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"  onLoad="CustomUIonLoad" >
    <ribbon startFromScratch="false" >
        <tabs>
            <tab idMso="TabDeveloper">
                <group id="gro19000423" label="sssss"  imageMso="JotRecordVideo"  insertBeforeQ="GroupControls" >
                    <button id="but19000521" label="qqqqqqqq"  size="large"  imageMso="HappyFace"  onAction="qqqqqqqq_onAction" />
                    <button id="but19000618" label="wwww"  size="large"  imageMso="QueryDelete"  onAction="wwww_onAction" />
                    <gallery id="gal19000716" label="ma gallery"  size="large"  imageMso="QueryBuilder"  columns="1"  itemHeight="40"  itemWidth="40"  onAction="ma_gallery_onAction" >
                        <item id="toto" label="toto"  imageMso="DatabaseOpenFromProject" />
                        <item id="titi" label="titi"  imageMso="NewMessageToContact" />
                        <item id="riri" label="riri"  imageMso="VoiceInsert" />
                    </gallery>
                </group>
            </tab>
            <tab id="tab19001105" label="Mon onglet perso" >
                <group id="gro19001203" label="Outils"  imageMso="DataValidationClearValidationCircles"  autoScale="true" >
                    <menu id="men19001231" label="truc muche"  size="large"  imageMso="TableDesign"  itemSize="large" >
                        <button id="but19010128" label="bidule"  imageMso="EquationProfessional"  onAction="bidule_onAction" />
                        <button id="but19010225" label="machin"  imageMso="VerticalSpacingDecrease"  onAction="machin_onAction" />
                        <button id="but19010325" label="chose"  imageMso="InternationalCurrency"  onAction="chose_onAction" />
                        <button id="but19010422" label="truc"  imageMso="WrapText"  onAction="truc_onAction" />
                    </menu>
                    <dynamicMenu id="dyn19010520" label="toto"  imageMso="JotShapeDiamond"  getContent="toto_getContent"  invalidateContentOnDrop="true" />
                    <separator id="sep19010617"/>
                    <button id="but19010715" label="Pierre"  size="large"  tag="Pierre"  imageMso="ParagraphSpacing"  onAction="Pierre_onAction" />
                    <button id="but19010812" label="Paul"  size="large"  tag="Paul"  imageMso="AddChartElementMenu"  onAction="Paul_onAction" />
                    <button id="but19010909" label="Jacques"  size="large"  tag="Jacques"  imageMso="WordArtChangeShapeGallery"  onAction="Jacques_onAction" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour