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
 

patricktoulon

XLDnaute Barbatruc
démonstration du moteur 2024
demo1.gif
 

patricktoulon

XLDnaute Barbatruc
les étapes de la procedure de création du fichier avec ruban
VB:
Sub create_Zip()
    'chemin du projet
    Dim chemin As String, cheminZip As String, folderUI As String, wbk As Workbook, vbcomp As Variant
    cheminxlsm = ThisWorkbook.Path & Application.PathSeparator & "monprojet.xlsm"
    cheminZip = Replace(cheminxlsm, ".xlsm", ".zip")
    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI"

    '-----------------------------------------------------------
    'ETAPE 1
    'creation du dossier pour le projetUI qui va contenir le contenu du zip
    'prevoir de le suprimer si il existe  avec un code mac
    'et creation du dossier
    If Dir(folderUI, vbDirectory) = "" Then MkDir folderUI


    '-----------------------------------------------------------
    'ETAPE 2:
    'Création du classeur
    Set wbk = Workbooks.Add

    '-----------------------------------------------------------
    'ETAPE 3 :
    'ajout du module pour les callback et inscription du code vba
    Set vbcomp = wbk.VBProject.vbcomponents.Add(1)
    vbcomp.Name = "Module_CallBack"
    vbcomp.CodeModule.InsertLines 1, "'blablabla" & vbCrLf & "'trucmuche machin chose"

    '-----------------------------------------------------------
    'ETAPE 4:
    'enregistrement du classeur en zip
    'suppression des fichiers si ils existent
    If Dir(cheminxlsm) <> "" Then Kill cheminxlsm
    If Dir(cheminZip) <> "" Then Kill cheminZip

    'sauve le classeur
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    wbk.SaveAs Filename:=cheminxlsm, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    wbk.Close
    DoEvents

    '-----------------------------------------------------------
    'ETAPE 5:
    'conversion en zip
    Name cheminxlsm As cheminZip

    '-----------------------------------------------------------
    'ETAPE 6:
    'extraction du contenu du zip dans un dossier temporaire folderUI
    'code Mac
    '-----------------------------------------------------------
    'ETAPE 7:
    'creation du dossier customUI dans le contenu extrait
    MkDir folderUI & Application.PathSeparator & "customUI"

    '-----------------------------------------------------------
    'ETAPE 8:
    'creation des deux ou un customui
    'avec open for blablabla ou une fonction tout faite
    'intégration dans le dossier customui
    '-----------------------------------------------------------
    'ETAPE 9:
    'modififaction du rel.xml
    'son chemin est forcement ' folderUI & application.pathseparator &"_rels" & application.pathseparator &".rels"

    '-----------------------------------------------------------
    'ETAPE 10
    'réintégration du contenu dans le zip
    'code Mac
    '-----------------------------------------------------------
    'ETAPE 11
    'reconversion du zip en xlsm
    Name cheminZip As cheminxlsm


End Sub
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
les étapes de la procedure de création du fichier avec ruban
VB:
Sub create_Zip()
    'chemin du projet
    Dim chemin As String, cheminZip As String, folderUI As String, wbk As Workbook, vbcomp As Variant
    cheminxlsm = ThisWorkbook.Path & Application.PathSeparator & "monprojet.xlsm"
    cheminZip = Replace(cheminxlsm, ".xlsm", ".zip")
    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI"

    '-----------------------------------------------------------
    'ETAPE 1
    'creation du dossier pour le projetUI qui va contenir le contenu du zip
    'prevoir de le suprimer si il existe  avec un code mac
    'et creation du dossier
    If Dir(folderUI, vbDirectory) = "" Then MkDir folderUI


    '-----------------------------------------------------------
    'ETAPE 2:
    'Création du classeur
    Set wbk = Workbooks.Add

    '-----------------------------------------------------------
    'ETAPE 3 :
    'ajout du module pour les callback et inscription du code vba
    Set vbcomp = wbk.VBProject.vbcomponents.Add(1)
    vbcomp.Name = "Module_CallBack"
    vbcomp.CodeModule.InsertLines 1, "'blablabla" & vbCrLf & "'trucmuche machin chose"

    '-----------------------------------------------------------
    'ETAPE 4:
    'enregistrement du classeur en zip
    'suppression des fichiers si ils existent
    If Dir(cheminxlsm) <> "" Then Kill cheminxlsm
    If Dir(cheminZip) <> "" Then Kill cheminZip

    'sauve le classeur
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    wbk.SaveAs Filename:=cheminxlsm, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    wbk.Close
    DoEvents

    '-----------------------------------------------------------
    'ETAPE 5:
    'conversion en zip
    Name cheminxlsm As cheminZip

    '-----------------------------------------------------------
    'ETAPE 6:
    'extraction du contenu du zip dans un dossier temporaire folderUI
    'code Mac
    '-----------------------------------------------------------
    'ETAPE 7:
    'creation du dossier customUI dans le contenu extrait
    MkDir folderUI & Application.PathSeparator & "customUI"

    '-----------------------------------------------------------
    'ETAPE 8:
    'creation des deux ou un customui
    'avec open for blablabla ou une fonction tout faite
    'intégration dans le dossier customui
    '-----------------------------------------------------------
    'ETAPE 9:
    'modififaction du rel.xml
    'son chemin est forcement ' folderUI & application.pathseparator &"_rels" & application.pathseparator &".rels"

    '-----------------------------------------------------------
    'ETAPE 10
    'réintégration du contenu dans le zip
    'code Mac
    '-----------------------------------------------------------
    'ETAPE 11
    'reconversion du zip en xlsm
    Name cheminZip As cheminxlsm


End Sub
Hi Partrick,

Voilà le résultat (qq doutes sur des petits points mais on verra plus tard) :
VB:
Sub create_Folders()
Dim folderUI As String

    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI"
    MkDir folderUI
    MkDir folderUI & Application.PathSeparator & "customUI"
    '-----------------------------------------------------------
End Sub


' -----------------------------------------------------------------------------------------------------------------------------------------------------------
' Suppression du dossier folderUI ainsi que des fichiers se trouvant à l'interieur
' -----------------------------------------------------------------------------------------------------------------------------------------------------------
Sub testDeleteFolder()
Dim folderUI As String
    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI" '& Application.PathSeparator

    DeleteFolder folderUI
End Sub

Function DeleteFolder(FolderToDelete As String)
    MacScript ("do shell script ""rm -R "" & quoted form of " & Chr(34) & FolderToDelete & Chr(34))
End Function
' -----------------------------------------------------------------------------------------------------------------------------------------------------------

' -----------------------------------------------------------------------------------------------------------------------------------------------------------
' UnZip du Fichier zip  ProjetUI
' -----------------------------------------------------------------------------------------------------------------------------------------------------------
Sub testUnzip()
Dim folderUI As String, FicUnZip As String
    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI" & Application.PathSeparator
    FicUnZip = "ZipUnzip.zip" ' "monprojet.zip"
    
    UnzipMacUI folderUI, FicUnZip
End Sub

Function UnzipMacUI(FolderToUnzip As String, FicUnZip As String)
    MacScript ("do shell script ""cd "" & quoted form of " & Chr(34) & FolderToUnzip & """ & " & """; unzip ../" & """ & " & Chr(34) & FicUnZip & Chr(34))
End Function
' -----------------------------------------------------------------------------------------------------------------------------------------------------------


' -----------------------------------------------------------------------------------------------------------------------------------------------------------
' Zip des fichiers qui sont dans ProjetUI au nivau superieur
' -----------------------------------------------------------------------------------------------------------------------------------------------------------
Sub testZip()
Dim folderUI As String, FicZip As String
    folderUI = ThisWorkbook.Path & Application.PathSeparator & "ProjetUI" & Application.PathSeparator
    FicZip = "monprojetFinal.zip"
    
    ZipMacUI folderUI, FicZip
End Sub

Function ZipMacUI(FolderToZip As String, FicZip As String)
    MacScript ("do shell script ""cd "" & quoted form of " & Chr(34) & FolderToZip & """ & " & """; zip -rD ../" & """ & " & Chr(34) & FicZip & """ & """ & " . -x " & "\"".DS*\""" & Chr(34))
End Function
' -----------------------------------------------------------------------------------------------------------------------------------------------------------
 

patricktoulon

XLDnaute Barbatruc
ok ryu
en l'etat la version 2024
contente toi de créer les elements ne cherche pas les attribut il n'y est pas encore la fonction je l'ai enlevé
et click sur savexml
juste pour voir si ça va jusqu'au bout
 

Pièces jointes

  • new classe xml customUI 2024.xlsm
    50 KB · Affichages: 2

RyuAutodidacte

XLDnaute Impliqué
ok ryu
en l'etat la version 2024
contente toi de créer les elements ne cherche pas les attribut il n'y est pas encore la fonction je l'ai enlevé
et click sur savexml
juste pour voir si ça va jusqu'au bout
Le xml tel qu'il apparait qd je l'ouvre sur mac avec VS code
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="tab000423">

                <group id="gro000618">

                    <buttonGroup id="but000813">

                        <button id="but000910"/>

                        <button id="but001008"/>

                    </buttonGroup>

                    <button id="but001105"/>

                    <button id="but001203"/>

                    <button id="but001231"/>

                </group>

            </tab>

            <tab id="tab000521">

                <group id="gro000716">

                    <menu id="men010128">

                        <button id="but010325"/>

                        <button id="but010422"/>

                    </menu>

                    <button id="but010225"/>

                </group>

            </tab>

        </tabs>

    </ribbon>

</customUI>
 

Pièces jointes

  • customUI.xml.zip
    902 bytes · Affichages: 2

Statistiques des forums

Discussions
315 120
Messages
2 116 443
Membres
112 745
dernier inscrit
mcanas