Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Configuration des tabulations ribbon

10 réponses
Avatar
Nicolas
Bonjour =C3=A0 tous,

J'utilise depuis peu les contr=C3=B4les "Ribbon" et je suis bloqu=C3=A9 dev=
ant la situation suivante :

j'ai configur=C3=A9 une tabulation/Ribbon nomm=C3=A9e "Publique", dans un f=
ichier "Ribbon_Publique.xlam" et qui est accessible depuis tous les fichier=
s ouverts, =C3=A0 exception, et c'est bien l=C3=A0 mon probl=C3=A8me, du fi=
chier "MonFichier.xlsm".

Le fichier "MonFichier.xlsm" contient lui m=C3=AAme sa propre tabulation/Ri=
bbon nomm=C3=A9e "MonFichier", qui n'est visible que si je me situe sur ce =
fichier, se qui est correct pour moi.

Cependant, depuis le fichier "MonFichier.xlsm" la tabulation/Ribbon "Publiq=
ue" est invisible, elle appara=C3=AEt bien cependant, depuis tous les autre=
s fichiers ouverts.

***configuration xml de "Publique" ***
<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"yes"?>
<customUI onLoad=3D"RibbonOnLoad" xmlns=3D"http://schemas.microsoft.com/off=
ice/2006/01/customui">

<ribbon>

<tabs>

<tab id=3D"PubliqueTab_Id" label=3D"Publique" insertBeforeMso=3D"TabH=
ome" getVisible=3D"GetVisible" tag=3D"PubliqueTab" >

...

***configuration xml de "MonFichier" ***
<?xml version=3D"1.0" encoding=3D"UTF-8" standalone=3D"yes"?>
<customUI onLoad=3D"RibbonOnLoad" xmlns=3D"http://schemas.microsoft.com/off=
ice/2006/01/customui">

<ribbon>

<tabs>

<tab id=3D"MonFichierTab_Id" label=3D"MonFichier" insertBeforeMso=3D"=
TabHome" getVisible=3D"GetVisible" tag=3D"MonFichierTab" >

...

Dans chacun des 2 fichiers nomm=C3=A9s pr=C3=A9c=C3=A9demment, il y a un mo=
dule "RibbonModule" qui contient les proc=C3=A9dures de lancement et modifi=
cation de la tabulation/Ribbon :

Dim Rib As IRibbonUI
Public MyTag As String

Sub RibbonOnLoad(ribbon As IRibbonUI)

Set Rib =3D ribbon

End Sub

Sub RefreshRibbon(Tag As String)

MyTag =3D Tag
If Rib Is Nothing Then
'MsgBox "Error, Save/Restart your workbook"
Application.StatusBar =3D "Error"
Else
Rib.Invalidate
End If

End Sub

Sub GetVisible(control As IRibbonControl, ByRef visible)
On Error Resume Next

...

End sub

***

J'ai essay=C3=A9 de changer dans le module "RibbonModule" de "MonFichier.xl=
sm" :
- la valeur "RibbonOnLoad" para "RibbonOnLoad2"
- la valeur "Rib", par "Rib2",
- la valeur "ribbon", par "ribbon2",
- la valeur "control", par "control2",
Dans le code xml :=20
- la valeur "RibbonOnLoad" para "RibbonOnLoad2"
- la valeur standalone=3Dyes para standalone=3Dno
- La position de la tab "insertBeforeMso", par "insertAfterMso".

mais rien n'y fait, les 2 tabulation/Ribbon fonctionnent "correctement", ce=
pendant je ne vois toujours pas ma tabulation/Ribbon "Publique" lorsque je =
suis sur "Monfichier.xlsm".

Je vous remercie d'avance pour toute l'aide que vous pourriez m'apporter.

=C3=80 bient=C3=B4t

10 réponses

Avatar
MichD
Bonjour,
Personnellement, je n'interviens pas sur les questions de programmation
du ruban d'Excel. Cependant, tu as presque tout sur ce sujet sur ce site
internet (en anglais) : https://www.rondebruin.nl/win/section2.htm
MichD
Avatar
Péhemme
Bonjour Nicolas,
Question stupide :
Ton fichier .xlam est-il bien coché dans : Développeur/Compléments ?
Sans quoi je ne vois pas.
Un fichier xlam reste accessible par son onglet personnalisé quels que
soient les fichiers .xlsm ouverts.
Michel
"Nicolas" a écrit dans le message de groupe de discussion :
Bonjour à tous,
J'utilise depuis peu les contrôles "Ribbon" et je suis bloqué devant la
situation suivante :
j'ai configuré une tabulation/Ribbon nommée "Publique", dans un fichier
"Ribbon_Publique.xlam" et qui est accessible depuis tous les fichiers
ouverts, à exception, et c'est bien là mon problème, du fichier
"MonFichier.xlsm".
Le fichier "MonFichier.xlsm" contient lui même sa propre tabulation/Ribbon
nommée "MonFichier", qui n'est visible que si je me situe sur ce fichier, se
qui est correct pour moi.
Cependant, depuis le fichier "MonFichier.xlsm" la tabulation/Ribbon
"Publique" est invisible, elle apparaît bien cependant, depuis tous les
autres fichiers ouverts.
***configuration xml de "Publique" ***
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad"
xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="PubliqueTab_Id" label="Publique" insertBeforeMso="TabHome"
getVisible="GetVisible" tag="PubliqueTab" >
...
***configuration xml de "MonFichier" ***
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad"
xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="MonFichierTab_Id" label="MonFichier"
insertBeforeMso="TabHome" getVisible="GetVisible" tag="MonFichierTab" >
...
Dans chacun des 2 fichiers nommés précédemment, il y a un module
"RibbonModule" qui contient les procédures de lancement et modification de
la tabulation/Ribbon :
Dim Rib As IRibbonUI
Public MyTag As String
Sub RibbonOnLoad(ribbon As IRibbonUI)
Set Rib = ribbon
End Sub
Sub RefreshRibbon(Tag As String)
MyTag = Tag
If Rib Is Nothing Then
'MsgBox "Error, Save/Restart your workbook"
Application.StatusBar = "Error"
Else
Rib.Invalidate
End If
End Sub
Sub GetVisible(control As IRibbonControl, ByRef visible)
On Error Resume Next
...
End sub
***
J'ai essayé de changer dans le module "RibbonModule" de "MonFichier.xlsm" :
- la valeur "RibbonOnLoad" para "RibbonOnLoad2"
- la valeur "Rib", par "Rib2",
- la valeur "ribbon", par "ribbon2",
- la valeur "control", par "control2",
Dans le code xml :
- la valeur "RibbonOnLoad" para "RibbonOnLoad2"
- la valeur standalone=yes para standalone=no
- La position de la tab "insertBeforeMso", par "insertAfterMso".
mais rien n'y fait, les 2 tabulation/Ribbon fonctionnent "correctement",
cependant je ne vois toujours pas ma tabulation/Ribbon "Publique" lorsque je
suis sur "Monfichier.xlsm".
Je vous remercie d'avance pour toute l'aide que vous pourriez m'apporter.
À bientôt
Avatar
Nicolas
Bonjour Michel,
Mon fichier .xlam n´était pas coché dans : Développeur/ Compléments.
À titre d'essai, et pour suivre ta recommandation, je l'ai placé dans le répertoire :
"C:UsersnicolasAppDataRoamingMicrosoftAddIns",
et j'ai coché la case "Développeur/Compléments".
Maintenant il s'exécute directement à l'ouverture d'Excel,
mais le problème persiste, lorsque j'ouvre "MonFichier.xlsm", mon ongl et "Publique" disparaît et est remplacé par l'onglet "MonFichier" .
Mais si je change dans le code xml du fichier "Ribbon_Publique.xlam", le co de :
<tab id="PubliqueTab_Id" label="Publique" insertBeforeMso="TabHome" g etVisible="GetVisible" tag="PubliqueTab" >
par le code :
<tab id="PubliqueTab_Id" label="Publique" insertBeforeMso="TabHome" >
L'onglet ne disparaît plus (je vois bien les 2 onglets en même te mps), mais les contrôles de l'onglet "Publique" n'y sont plus et l'ong let "MonFichier" fonctionne correctement.
Merci Michel pour ton aide.
Avatar
Péhemme
Bonjour Nicolas,
répertoire : "C:UsersnicolasAppDataRoamingMicrosoftAddIns",

Correct
et j'ai coché la case "Développeur/Compléments"

Correct
lorsque j'ouvre "MonFichier.xlsm", mon onglet "Publique" disparaît et est
remplacé par l'onglet "MonFichier".

Je ne comprends pas.
Qu'entends-tu par disparaître ?
Quand ton fichier "MonFichier.xlsm" est chargé, tes 2 onglets "Publique"
doivent apparaître sur la même ligne que Fichier-Accueil-Insertion-.....
Développeur.
Personnellement, je n'utilise jamais les instructions XML "GetVisible" ni
le "Tag".
À titre d'exemple dans le XML de d'un fichier .xlsm j'écris (je suis sous
W7 - Excel 2010) :
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="rx_RubanCharge">
<ribbon startFromScratch="false" >
<tabs>
<tab id="Tab_Cycles" label="Cycles et Dates" >
reste de ton ruban
</tab>
</tabs>
</ribbon>
....
et dans un Module :
'Déclaration du Ruban
Public monRuban As IRibbonUI
Puis pour charger le ruban lors de l'ouverture du fichier .xlsm :
'Callback for customUI.onLoad
Sub rx_RubanCharge(ribbon As IRibbonUI)
Set monRuban = ribbon
monRuban.ActivateTab "Tab_Cycles"
End Sub
Ainsi,
1°) quand tu ouvres Excel, ton fichier .xlam est chargé automatiquement et
son onglet "Publique" apparaît dans la barre des onglets.
De là tu as, à loisir, accès à tes contrôles comme tu le ferais avec :
Accueil ou Révision ou tout autre onglet.
2°) maintenant tu ouvres ton fichier normal (.xlsm) :
là ton onglet "Publique" attaché à celui-ci apparaît également dans la barre
des onglets.
L'accès aux différents boutons de contrôle y attachés se fait de la même
façon que pour las autres contrôles de n'importe quel autre onglet ; rien ne
"disparaît".
Je te confirme : je n'ai pas compris.
;-))
Au besoin mets ton fichier sur cjoint et transmets-nous le lien.
Michel
"Nicolas" a écrit dans le message de groupe de discussion :
Bonjour Michel,
Mon fichier .xlam n´était pas coché dans : Développeur/Compléments.
À titre d'essai, et pour suivre ta recommandation, je l'ai placé dans le
répertoire :
"C:UsersnicolasAppDataRoamingMicrosoftAddIns",
et j'ai coché la case "Développeur/Compléments".
Maintenant il s'exécute directement à l'ouverture d'Excel,
mais le problème persiste, lorsque j'ouvre "MonFichier.xlsm", mon onglet
"Publique" disparaît et est remplacé par l'onglet "MonFichier".
Mais si je change dans le code xml du fichier "Ribbon_Publique.xlam", le
code :
<tab id="PubliqueTab_Id" label="Publique" insertBeforeMso="TabHome"
getVisible="GetVisible" tag="PubliqueTab" >
par le code :
<tab id="PubliqueTab_Id" label="Publique" insertBeforeMso="TabHome" >
L'onglet ne disparaît plus (je vois bien les 2 onglets en même temps), mais
les contrôles de l'onglet "Publique" n'y sont plus et l'onglet "MonFichier"
fonctionne correctement.
Merci Michel pour ton aide.
Avatar
MichD
Bonjour,
Une suggestion : Regarde la vidéo à cette adresse : (en anglais)
Désolé, je n'ai pas trouvé la version chinoise! ;-)
https://www.youtube.com/watch?reload=9&v=AhnOU-ulqNg
MichD
Avatar
Péhemme
Bonjour Nicolas,
Lorsque j'ouvre "MonFichier.xlsm" l'onglet "publique" ne se voit plus, et
c'est bien là mon problème, et est comme remplacé par l'onglet
"MonFichier" qui est lui exclusivement associé à ce dernier fichier.

Je ne reproduis pas chez moi (W7 - Excel 2010) ton problème.
J'ai chargé ton fichier .xlam puis chargé ton "MonFichier.xlsm" et j'ai bien
les 2 onglets disponibles.
Les contrôles attachés à chacun des onglets ne sont naturellement
accessibles que si tu appelles (clique sur) l'onglet concerné.
En revanche, l'onglet attaché à ton fichier "MonFichier.xlsm" n'apparait que
lorsque celui-ci est activé. Par exemple si tu ouvres un autre fichier de
travail, l'onglet "MonFichier" disparait, mais celui nommé "Publique" (ton
.xlam) demeure (c'est le propre des .xlam).
En d'autres termes, ton onglet "Publique" est chez moi toujours apparent
tandis que que ton onglet "MonFichier" n'apparait que lorsque ton fichier
"MonFichier.xlsm" est activé.
Ceci est le comportement normal d'Excel, c'est la raison pour laquelle je ne
comprends pas que tu obtiennes le résultat inverse.
N'as-tu pas inversé les extensions ?
Je suis désolé de ne pas pouvoir faire plus à ce niveau.
Bien amicalement
Michel
"Nicolas" a écrit dans le message de groupe de discussion :
Bonjour Michel,
tu trouveras ici les 2 fichiers dont je parles:
- https://www.cjoint.com/c/JErrNAFIRHQ : Ribbon_Publique.xlam
- https://www.cjoint.com/c/JErrRmdakBQ : MonFichiers.xlsm
J'utilise les Tag, afin de pouvoir accéder aux différentes options des
onglets selon mes besoins.
Lorsque j'ouvre "MonFichier.xlsm" l'onglet "publique" ne se voit plus, et
c'est bien là mon problème, et est comme remplacé par l'onglet "MonFichier"
qui est lui exclusivement associé à ce dernier fichier.
Si je me déplace sur un autre fichier, je peux à nouveau accéder à mon
onglet "Publique".
J'utilise Excel 2013-2016.
Merci encore Michel, pour ton aide.
À bientôt
Nicolas
Avatar
Péhemme
Exact Nicolas,
Ta gestion de tes 'visible' n'est pas au point dans ton fichier
"Ribbon-Publique".
Je n'avais pas testé tes contrôles.
En effet, lorsque tu utilises le ruban de "Monfichier" et que tu reviens sur
un contrôle de "Publique", ce dernier 'disparaît' (n'est plus visible bien
qu'il soit toujours chargé dans Excel).
Afin de palier cette difficulté je te suggère d'utiliser des SplitButton
dans ton XML au lieu de gérer des 'getvisible'.
Par exemple :
https://www.cjoint.com/c/JEsptzl7KQY
et :
https://www.cjoint.com/c/JEspr2s6MfY
Michel
"Nicolas" a écrit dans le message de groupe de discussion :
Bonjour Michel,
tu trouveras ici les 2 fichiers dont je parles:
- https://www.cjoint.com/c/JErrNAFIRHQ : Ribbon_Publique.xlam
- https://www.cjoint.com/c/JErrRmdakBQ : MonFichiers.xlsm
J'utilise les Tag, afin de pouvoir accéder aux différentes options des
onglets selon mes besoins.
Lorsque j'ouvre "MonFichier.xlsm" l'onglet "publique" ne se voit plus, et
c'est bien là mon problème, et est comme remplacé par l'onglet "MonFichier"
qui est lui exclusivement associé à ce dernier fichier.
Si je me déplace sur un autre fichier, je peux à nouveau accéder à mon
onglet "Publique".
J'utilise Excel 2013-2016.
Merci encore Michel, pour ton aide.
À bientôt
Nicolas
Avatar
Nicolas
Merci à tous les deux pour votre aide et votre temps,
J'ai vu et "tâché" de suivre au mieux le tutoriel, mais j'ai la s ensation que le "problème" ne se situe pas au niveau des permis, mais plutôt au niveau de la fonction getvisible, encore que étant asse z novice en la matière, je n’exclurai aucune hypothèse.
Il me "coûte" cependant de renoncer à la fonction "getvisible", s i par là, je dois renoncer également à la manière dont je souhaiterais activer les différentes options de l'onglet, qui bien que pré-configurées, se déploient, à l'horizontale de f açon dynamique, comme dans l'exemple que je vous est envoyé : Men u, sous-menu, ...
¿ Quelle est la fonction du code : startFromScratch="false" ?
Merci encore pour votre inestimable aide.
Nicolas
Avatar
Péhemme
Bonjour Nicolas,
¿ Quelle est la fonction du code : startFromScratch="false" ?

Si tu mets <ribbon startFromScratch="true" > , tu masques tous les onglets
au chargement de ton fichier ; seul le ruban de ton fichier est apparent.
Bien qu'il date un peu, tu as un excellent tuto :
https://silkyroad.developpez.com/excel/ruban/
Bon courage
Michel
"Nicolas" a écrit dans le message de groupe de discussion :
Merci à tous les deux pour votre aide et votre temps,
J'ai vu et "tâché" de suivre au mieux le tutoriel, mais j'ai la sensation
que le "problème" ne se situe pas au niveau des permis, mais plutôt au
niveau de la fonction getvisible, encore que étant assez novice en la
matière, je n’exclurai aucune hypothèse.
Il me "coûte" cependant de renoncer à la fonction "getvisible", si par là,
je dois renoncer également à la manière dont je souhaiterais activer les
différentes options de l'onglet, qui bien que pré-configurées, se déploient,
à l'horizontale de façon dynamique, comme dans l'exemple que je vous est
envoyé : Menu, sous-menu, ...
¿ Quelle est la fonction du code : startFromScratch="false" ?
Merci encore pour votre inestimable aide.
Nicolas
Avatar
Nicolas
Bonjour Michel et encore merci pour ton aide.
À bientôt
Nicolas