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
ben rien pour le moment si tout fonctionne tu a de quoi te faire ton RiBBon Maker
le mien est fini j'ai fait quelques ajustements d'ordre esthétique et ergonomiques
j'ai ajouté
la possibilité de masquer certains onglets ou tous (affiché dans le fake treeview )
le visuel du code
des icons significatifs dans les boutons
j'ai remis l'attribut getitemimage pour des images externes(restant externe )(gif,jpg,bitmap)
etc..etc...
d'ici ce weekend il est dans les ressources ;)

sans masquer les autres onglets
demo.gif



exemple en masquant certains onglets


demo.gif


exemple insérer le nouvel onglet avant un autre

demo.gif
 

RyuAutodidacte

XLDnaute Impliqué
Hi Patrick,
Voilà un pbm en moins sur Mac ajout du bom :
VB:
Sub AddBom()
Dim BOM(0 To 2) As Byte 'EF BB BF
    BOM(0) = &HEF
    BOM(1) = &HBB
    BOM(2) = &HBF

myFile = Application.GetOpenFilename() 'pour test, mais chemin du xml au final

Open myFile For Binary Access Write As #1
    Put #1, 1, BOM
Close #1
End Sub

Par contre j'ai une question technique pour la modification du fichier : .rels
Ce fichier a-t-il un bom ? comment je dois m'y prendre pour la modification sans l'altérer ?
PS : le fichiers commençant par un . sur Mac sont des fichiers invisibles
 

RyuAutodidacte

XLDnaute Impliqué
bonjour ryu
en voilà une autre
je vais te dire
si à un momment donné le bouillon vaut plus cher que la soupe , je suis pas sur que cela vaille le coup
Re Patrick 👋

Mais non voyons ton Ribbon creator ça fait longtemps que tu l'a commencé, alors que moi je viens tout juste de rentrer dedans (un fichier invisible n'est pas un pb …)

Et comme je viens tout juste d'apprendre ce que je ne connaissait pas, j'ai qd même bien avancé, même si je n'ai pas la maitrise de tout.

Je sais bien qu'il y aura toujours une différence entre le PC et le Mac pour Excel, ça n'empêche que l'on peut faire un multitude chose dans n'importe quel domaine et dont je me sers aussi dans mon taf.

il suffit d'une bonne imagination et une bonne conception … ;)

Et imagine quelqu'un sur Mac qui veut faire ce que l'on fait mais qui n'a pas accès à un PC et qu'il a une solution donnant le résultat escompté, ca le fait grave :D

En attendant tu n'as pas répondu à ma question stp :
Par contre j'ai une question technique pour la modification du fichier : .rels
Ce fichier a-t-il un bom ? comment je dois m'y prendre pour la modification sans l'altérer ?
Alors ???

PS : normalment que j'avance lentement avec mon taf de la semaine + le 2ème taf 🤣
 

patricktoulon

XLDnaute Barbatruc
non le rels n'a pas de bom je sais c'est bizarre mais bon

le projet c'est de le faire avec un fichier excel si il y a des choses que tu dois faire en externe alors non ca vaut pas le coup
apres tu met le temps que tu veux bien sur
et non mon projet je ne l'ai pas commencé il y a longtemps
tout simplement parce que avec des icon perso (png,gif,jpg,bitmap,etc...) la structure dans le zip est encore différente ,certes je suis peut être un peu plus a guéri

cela dit oui prends ton temps bien sur

mais perso j'y crois pas trop ,tu n'est pas le premier à te lancer à faire ça sur MAC
tout simplement parce que si tu n'a pas le moyen d'utiliser par vba un domdocument (ou autre sur MAC éventuellement)
et donc pas la possibilité de vérifier une structure valide pour un customUI.xml
car il n'y a pas que la structure xml qui compte mais aussi les règles
certains élements ne vont pas dans d'autres
certains éléments ne peuvent pas avoir certains attribut et d'autre peuvent ou ne peuvent pas selon leur parent
et il y en a un paquet de règles comme ça
ou alors il te faudra connaitre les règles par coeur pour ne pas faire de gaffes
 

RyuAutodidacte

XLDnaute Impliqué
Hello Patrick ;) ,
Faison un récap :

Les onglets :
1686998198237.png


Ci dessous les différentes balises (j'ai enlevé command).
à mon avis il y a des erreurs dans l'ordre de hiérarchisation (si tu peux me corriger stp)

1686998744035.png


En rapport avec ces balises on a :
  1. Les fonctions d'appel : onLoad, loadImage, getEnabled, onAction, getVisible, getKeytip, getLabel, getImage, getScreentip, getSupertip, getDescription, getShowImage, getShowLabel, getSize, getPressed, getItemCount, getItemID, getItemImage, getItemLabel, getItemScreentip, getItemSupertip, getText, onChange, getSelectedItemID, getSelectedItemIndex, getContent, getItemHeight, getItemWidth, getTitle
  2. Les attributs : boxStyle, columns, description, enabled, id, idMso, idQ, image, imageMso, insertAfterMso, insertAfterQ, insertBeforeMso, insertBeforeQ, invalidateContent OnDrop, itemHeight, itemSize, itemWidth, keytip, label, maxLength, rows, screentip, showImage, showItemImage, showItemLabel, showLabel, size, sizeString, startFromScratch, supertip, tag, title, visible, xmIns

Je suppose que tu n'as pas tout mis … dans ton creator ?
Questions :
  1. Dans ton créator tu ne te sers pas de tout ?
  2. Quelles sont les fonctions d'appels les plus utilisés ? ou dans ton creator ?
  3. Quels sont les attributs les plus utilisés ? ou dans ton creator ?
Update du message :
il y aussi les call backs en rapport avec les fonctions d'appels (si j'ai bien compris)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
oui déjà rien que la capture il y a une erreur au début
1 customUI balise customUI mère de toute( la matriarche)
2 ribbon balise ribbon (container contenant les balises tabs(l'ensemble des onglets))
3 tabs balise tabs(container contenant les balises tab(les onglets UNIQUEMENT!!!))
4 tab balise tab (ou onglet)(container contenant les balises group(les group UNIQUEMENT!!!))
5 group balise group (contenair pouvant contenir tout les controls et autre balise secondaires(sub container)

un group ne va pas ailleurs que d"ans un tab
un bouton ne va pas dans un : customUI , ribbon , tabs ,tab ,comboBox
la hiérarchie de base c'est toujours celle ci

VB:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   
      <command>
      </command>
  <ribbon startFromScratch="false">
      
      <tabs>
          <tab id="Tab_1" label="mon onglet ">
              <group id="groupe" label="Essais de menus">
            

              </group>
              <group id="group_1" label="mon groupe">
            

              </group>
          </tab>
        </tabs>

     </ribbon>
</customUI>
on ne peut déroger à cette règle de base
 

RyuAutodidacte

XLDnaute Impliqué
Re,
ok c'est corrigé :
1687002767031.png


un group ne va pas ailleurs que d"ans un tab
un bouton ne va pas dans un : customUI , ribbon , tabs ,tab ,comboBox
la hiérarchie de base c'est toujours celle ci
Oui c'est bien le plus gros des pbm de savoir qui va dans quoi … ?
car là on est dans les règles globales, mais qd on va dans l'antre de la bête, c'est pas la même chose…
plusieurs combinaisons possible …
D'ailleurs je suppose que domdocument permet de gérer c'est règle (partie encore obscure pour moi)

Qu'en est t-il par rapport aux autres questions ?
 

Statistiques des forums

Discussions
314 017
Messages
2 104 587
Membres
109 084
dernier inscrit
mizab