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é
Re Patrick,

C'est qd même fou, j'ai créé un xlsm avec Excel Mac
je mis le ".zip"
je l'ai dézippé dans un dossier projet
j'ai modifié le ".rels"
Mis le dossier customUI avec son xml
puis j'ai créé le zip
sur Mac il ne marche pas en le remettant en xlsm alors que sur PC c'est OK
1686769303298.png

1686769313689.png

il faut que j'en trouve la raison …

SI quelqu'un à une idée … ?? je suis preneur :)
je pense que la solution se trouve dans le Zip mais où ???
 

RyuAutodidacte

XLDnaute Impliqué
donne moi le en xlsm
Re,
c'est le même que tu as transformé de zip à xlsm

Par contre j'ai remarqué avec la commande du terminal avec mon fichier test et un fichier xlsm que j'ai créer et où j'ai mis .zip à la place :
unzip -l lefichier.zip
résultats :


le fichier test Testzip.zip :
Bash:
  Length      Date    Time    Name
---------  ---------- -----   ----
      738  06-14-2023 14:11   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/_rels/.rels
     1010  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/[Content_Types].xml
      858  06-14-2023 01:31   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/customUI/customUI14.xml
      803  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/docProps/app.xml
      635  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/docProps/core.xml
     2267  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/xl/workbook.xml
      949  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/xl/worksheets/sheet1.xml
     1618  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/xl/styles.xml
     8391  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/xl/theme/theme1.xml
      557  01-01-1980 00:00   Users/NameUser/Documents/PROCESS/INDEX/PROJET RUBAN/Projet/xl/_rels/workbook.xml.rels
---------                     -------
    17826                     10 files

et le fichier normal TOTO.zip :
Bash:
  Length      Date    Time    Name
---------  ---------- -----   ----
     1010  01-01-1980 00:00   [Content_Types].xml
      588  01-01-1980 00:00   _rels/.rels
      557  01-01-1980 00:00   xl/_rels/workbook.xml.rels
     2247  01-01-1980 00:00   xl/workbook.xml
     1618  01-01-1980 00:00   xl/styles.xml
     8391  01-01-1980 00:00   xl/theme/theme1.xml
      949  01-01-1980 00:00   xl/worksheets/sheet1.xml
      803  01-01-1980 00:00   docProps/app.xml
      621  01-01-1980 00:00   docProps/core.xml
---------                     -------
    16784                     9 files
on voit qu'ici il indique pas le chemin complet mais juste ce que le fichier zip contient …
 

Pièces jointes

  • Testzip.xlsm
    8.2 KB · Affichages: 1

RyuAutodidacte

XLDnaute Impliqué
Même Ron De Bruin a dit que l'on ne pouvait pas le faire sur MAC 🤣 (désolé mais c'est faux maintenant)
et bien après plusieurs Manip avec le terminal de OS X je peux ouvrir le fichier construit sur Mac entièrement en ayant les boutons :

1686779646583.png


Alors on ne la fait pas à Ryu 🤣
bon faut juste que je trouve la commande du terminal qui me permet de le faire en OneShot 🔫

PS : j'ai : cd LeDossier

Dans le principe :
Commande 1 = zip -r ../Testzip.zip .
Commande 2 = zip -d ../Testzip.zip "Users/*"
Commande 3 = zip -d ../Testzip.zip "*/"
Commande 4 = zip -d ../Testzip.zip ".DS*"

Le but est d'en faire une seule commande maintenant …

Résultat des commandes :
Bash:
  Length      Date    Time    Name
---------  ---------- -----   ----
     1010  01-01-1980 00:00   [Content_Types].xml
      803  01-01-1980 00:00   docProps/app.xml
      635  01-01-1980 00:00   docProps/core.xml
      858  06-14-2023 01:31   customUI/customUI14.xml
      738  06-14-2023 14:11   _rels/.rels
     2267  01-01-1980 00:00   xl/workbook.xml
      949  01-01-1980 00:00   xl/worksheets/sheet1.xml
     1618  01-01-1980 00:00   xl/styles.xml
     8391  01-01-1980 00:00   xl/theme/theme1.xml
      557  01-01-1980 00:00   xl/_rels/workbook.xml.rels
---------                     -------
    17826                     10 files
 

RyuAutodidacte

XLDnaute Impliqué
Re
enfin c'est OK :cool:

1686782818241.png


1 on créé le xlsm et on le passe en .zip

2 on créé sont dossier projet (ici PROJETOK) et on pointe dessus avec le terminal
Bash:
cd /Users/UserName/Desktop/000_TEST\ RUBAN/customUI/Projet/PROJETOK

3 on dézippe le fichier zip Excel dans le dossier PROJETOK
Bash:
unzip ../TestRibbonOK.zip

4 on modifie le "_rels/.rels" et on ajoute le "customUI/customUI14.xml" dans les dossier PROJETOK

5
on Rezippe le tout avec la commande :
Bash:
zip -rD ../TestRibbonOK.zip . -x ".DS*"
Bash:
  Length      Date    Time    Name
---------  ---------- -----   ----
     1010  01-01-1980 00:00   [Content_Types].xml
      803  01-01-1980 00:00   docProps/app.xml
      621  01-01-1980 00:00   docProps/core.xml
      858  06-14-2023 01:31   customUI/customUI14.xml
      738  06-14-2023 14:11   _rels/.rels
     2262  01-01-1980 00:00   xl/workbook.xml
      949  01-01-1980 00:00   xl/worksheets/sheet1.xml
     1618  01-01-1980 00:00   xl/styles.xml
     8391  01-01-1980 00:00   xl/theme/theme1.xml
      557  01-01-1980 00:00   xl/_rels/workbook.xml.rels
---------                     -------
    17807                     10 files

6 on repasse le fichier TestRibbonOK.zip en TestRibbonOK.xlsm

7 Il n'y a plus qu'à ouvrir notre fichier

1686783925870.png


C'est pas beau tout ça … et je pense que l'on peut l'automatiser en VBA ;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour ryu
bon ben tu fait ce que je fait avec windows tout simplement
reste effectivement de savoir si on peut automatiser ça par vba sur Mac
c'est a dire lancer les commandes comme je le fait avec Windows
  1. création du classeur( ca OK avec workbook.add et un save
  2. ajouter un module pour y inscrire les callbacks( à voir sur mac)
  3. sauver le classeur
  4. changer l’extension en ".Zip"
  5. créer un dossier temp pour dézipper le contenu
  6. dézippez le contenu
  7. ajouter un dossier customUI
  8. changer le fichier".rels" dans le dossier"_rels"
  9. créer le fichier customUI.xml dans le dossier customUI
  10. renvoyer le tout dans le fichier Zip
  11. remettre l’extension".xlsm" au fichier ".Zip"
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Re Patrick ;)
est ce que tes customUI.xml produits sont indentés
Oui ils le sont …
à la limite je peux (je pense )te faire les callbacks avec une fonction String
donne moi un xml tel que tu les produits
Je pense produire les CallBacks en même temps que je créé les xml via mon tableau (je suis sur des amélio) une fois duement rempli … ( ca sera sur la même boucle dans le code … évitons de faire d'autre boucles :D)
En taf en journée je suis au ralenti sur la conception 😢
j'ai juste besoin de rassembler les différents CallBacks existant avec la correspondance sur un fichier afin de voir de quelle manière je m'y prends.

Et j'ai toutes parties à créer : New worbook xlsm, création du module, copie des CallBacks dans le module … etc. Tout est possible sur Mac.

Et après je dois voir ces parties :
  1. changer l’extension en ".Zip" => avec Name OK
  2. créer un dossier temp pour dézipper le contenu => OK faisable
  3. dézippez le contenu => à voir en VBA
  4. ajouter un dossier customUI => OK faisable
  5. changer le fichier".rels" dans le dossier"_rels" => à voir en VBA
  6. créer le fichier customUI.xml dans le dossier customUI => OK faisable
  7. renvoyer le tout dans le fichier Zip => à voir en VBA
  8. remettre l’extension".xlsm" au fichier ".Zip" => avec Name OK
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
test ça et on vois tout de suite si tu peux continuer a le faire sur excel avec un MAC
1686848088204.png

J'ai déjà testé des parties de code et bien sur que ça marche
Y aura seulement certaines parties de code qui devront être faites pour Mac

Exemple : tu peux pas programmer avec des ActiveX sur Mac, donc on fait autrement …
On ne peut pas utiliser un dictionnaire sur Mac, mais on a les collections (et avec un module de classe on a aussi un dictionnaire via les collection :D - Merci MarcL ;) )
etc …

Pour répondre à ta question oui je peux continuer
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
tout du moins la partie callback et insertion des fichiers xml dans les dossiers
la seule chose que tu ai a faire finalement c'est
1 ta construction xml en string et la modif du rel en string
le reste tu adapte avec mes fonctions
c'est pas compliqué ;)
 

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio