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
 

patricktoulon

XLDnaute Barbatruc
Bonjour RYU
ça fait plaisir de te revoir




que donne sur ton mac
VB:
Sub test()
MsgBox Application.Version
MsgBox Application.OperatingSystem
End Sub

au cas ou
VB:
Sub Add_AddIn2()    'version Mac (peut être PC aussi pouvez vous confirmer SVP)
    Dim addInPath As String, X$

    addInPath = "MonChemin/TEST.xlam"'le chemin est pour MAC au départ

    On Error Resume Next

    X = Application.OperatingSystem    'get la version du sytem(erreur sur mac me semble t il )

    If Err.Number <> 0 Or InStr(1, X, "Windows") > 0 Then    'si on est dans Windows ou qu'il y a une erreur quelconque

        addInPath = Replace(addInPath, "/", "\")    'on change alors le separateur

        Err.Clear    ' on clear l'erreur  pour continuer

    End If

    AddIns.Add addInPath    'on add le complement

    AddIns("TEST").Installed = True    ' reference cochée   '

    On Error GoTo 0    ' fermeture du compte de gestion d'erreur
End Sub
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Hello Patrick

Moi aussi ca me fait plaisir de te revoir !!!
VB:
Sub test()
    Debug.Print Application.Version
    Debug.Print Application.OperatingSystem
End Sub

le résultat est :
16.72
Macintosh (ARM) Version 12.6 (assemblage 21G115)

pour savoir si on est sur mac ou pc il existe :

Code:
#if Mac then

  'Run on Mac

#else

  'Run on PC

#endif

Mon petit problème, être sur que ce code marche sur PC :
Code:
AddIns("TEST").Installed = True

et mon plus gros problème : pourvoir créer par macro un nouvel onglet dans le ruban et y attacher 4 macros via des grosse icones nommer (Mac/PC) :
Ex :

ce résultat ci-dessus je l'ai fait manuellement
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
donc si pas d'erreur alors on est bon on peut supprimer la gestion d'erreur
VB:
Sub Add_AddIn2()    'version Mac (peut être PC aussi pouvez vous confirmer SVP)
    Dim addInPath As String, X$

    addInPath = "MonChemin/TEST.xlam" 'le chemin est pour MAC au départ

    
    X = Application.OperatingSystem    'get la version du sytem

   If InStr(1, X, "Windows") > 0 Then    'si on est dans windows
  
        addInPath = Replace(addInPath, "/", "\")    'on change alors le separateur
    
    End If

    AddIns.Add addInPath    'on add le complement

    AddIns("TEST").Installed = True    ' reference cochée   '

End Sub
 

RyuAutodidacte

XLDnaute Impliqué
Re j'avais modifié mon message précédent pour le compléter (t as pas du le voir je pense)
mais c'est cool tu as répondu à mon 1er petit problème

Il reste mon plus gros problème ci-dessus (message précédent)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
l'addin est bien coché dans les option excel
on le voit bien dans le VBE
mais dans les refs il n'est pas coché donc inutilisable


maintenant si je coche la reference à la main


perso je fait autrement mais dans windows par contre je ne sait pas si on peut adapter sur MAC
voici comment je fait
VB:
Sub AddRefXla()

    chemin_xla = "C:\Users\patrick1\AppData\Roaming\Microsoft\AddIns\test.xlam"

    On Error Resume Next
    ThisWorkbook.VBProject.References.AddFromFile (chemin_xla)

End Sub

Sub SuPRefXla()
    chemin_xla = "C:\Users\patrick1\AppData\Roaming\Microsoft\AddIns\test.xlam"
     Set myaddin = AddIns.Add(Filename:=chemin_xla, CopyFile:=False)
    myaddin.Installed = True
    With ThisWorkbook.VBProject
       On Error Resume Next
       .References.Remove .References(Workbooks(myaddin.Name).VBProject.Name)
    On Error GoTo 0
    End With
    myaddin.Installed = False
End Sub

Sub test_la_sub_du_xlam()
    testy
End Sub
démonstration
 

patricktoulon

XLDnaute Barbatruc
pour ton ruban (ton onglet "MACROS" )maintenant
comment tu le crée ?
avec custom UI?
si c'est le cas ajouter des boutons sera impossible sauf usine a gaz avec fermeture et ouverture du fichier
bref et encore c'est pas stable
ajouter avec commandbar(x).controladd t'ajouterait un onglet complements automatiquement (rétrocompatibilité avec 2003) mais c'est des petits boutons

j'ai bien une astuce en vba mais encore une fois pour windows mais sans callback et avec des gros icons
 

RyuAutodidacte

XLDnaute Impliqué
Re,
Petite parenthèse pour revenir sur la Add in, sur PC il me semble en fait que l'écriture du code VBA est différent de Mac et donc pour que Add in in soit coché il faut l'écrire de cette manière :
VB:
Dim addInPath As String
addInPath = "C:\MonAddIn.xlam"
Application.AddIns.AddFromFile addInPath
AddIns("MonAddIn").Installed = True ' Active l'Add-in
Application.AddIns.AddFromFile
Peux-tu me confirmer stp ?

En effet dans mes recherches sur Internet je suis bien tombé sur CustomUI et Application.CommandBars.Add, mais je ne m'y connais pas assez sur cette partie à fin de bien le comprendre et de l'utiliser correctement …

C'est quoi que tu appelles callback pour ce processus ?
Est-ce que Application.CommandBars.Add permet que l'onglet complément s'affiche sur tous les fichiers Excel et qu'on puisse le retrouver sur tous les fichiers Excel quand on réouvre l'application Excel ?

Ce que j'aimerais en définitif c'est que l'onglet dans le ruban soit installé une bonne fois pour toute et qu'il puisse s'afficher sur tous les fichiers Excel et même après fermeture et ouverture de l'application Excel.
Est-ce possible ?

Je suis preneur de toutes astuces même celle pour Windows
 

patricktoulon

XLDnaute Barbatruc
RE
question1: "addfromfiles pour addins"
réponse :négatif

question :custom UI
il te faut à minima customUIeditor qui ajoute des xml dans le zip du fichier excel
connaissance un minimum du language XML requise
pour commencer vu ton besoin ceci ci dessous suffit
compatible all version

question :commandbars.add
pareil dans l'ancien monde
compatible all version par rétrocompatibilité (2003)
si elle n'est pas délétée la commandbar reste (mais attention au macro associées au boutons il faut qu'il soient dispos)

question: callback
les bouton dans le ribbon(customUI) envoient et reçoivent des informations(propertie,tag,label,etc...))

question pour mon ultime astuce
si tu a MAC cherche le dossier homonyme a celui dans windows et dis moi si tu le trouve
exemple pour chez moi dans windows c'est ce dossier ci dessous
"C:\Users\patrick1\AppData\Local\Microsoft\Office"
tu devrais y voir des truc du genre dedans


si tu trouve ce dossier je te ferait un exemple en codant en string car il faut conctruire un XML et mac c'est chaud sans object xmldocument (librairie inexistante dans MAC )

voila voila
 

RyuAutodidacte

XLDnaute Impliqué
Hello Patrick ,
J'ai récupéré un PC dans ma boîte, mais je ne connais pas les restrictions administrateur
en tout cas je suis prêt pour regarder du coté de l'astuce que tu me proposes

MAJ : est il possible de le faire de manière globale, c-a-d que lorsque on ouvre l'application Excel, que l'on puisse retrouvé l'onglet qq soit le doc. que l'on ouvre ou tout nouveau doc. ?
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…