Bonjour,

J'ai besoin de gérer dynamiquement l'accès au nouveau menu Fichier (ex bouton Office) d'Excel 2010. L'idéal serait même de le masquer totalement à certains moments, mais je ne crois pas que cela soit possible.

Je me propose donc de rendre visible/invisible, les boutons et tabs de ce menu "Fichier", comme les autres onglets du ruban.
Pour cela j'ai créé le fichier xml suivant :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="ChargeRuban">
<!-- Indiquez True pour masquer tous les autres onglets standards-->
   <ribbon startFromScratch="true">
 
	<tabs>
		<tab idMso="TabHome" getVisible="GereTabHomeCallBack"/>
		<tab idMso="TabInsert" getVisible="GereTabInsertCallBack"/>
		<tab idMso="TabPageLayoutExcel" getVisible="GereTabMEPCallBack"/>
		<tab idMso="TabFormulas" getVisible="GereTabFormulasCallBack"/>
		<tab idMso="TabData" getVisible="GereTabDataCallBack"/>
		<tab idMso="TabReview" getVisible="GereTabReviewCallBack"/>
		<tab idMso="TabView" getVisible="GereTabViewCallBack"/>
		<tab idMso="TabDeveloper" getVisible="GereTabDeveloperCallBack"/>
	</tabs>
 
    </ribbon>
 
    <backstage>
		<button idMso="FileSave" getVisible="GereBoutonFSCallback"/>
		<button idMso="FileSaveAs" getVisible="GereBoutonFSACallback"/>
		<button idMso="FileOpen" getVisible="GereBoutonFOCallback"/>
		<button idMso="FileClose" getVisible="GereBoutonFCCallback"/>
		<tab idMso="TabInfo" getVisible="GereBoutonInfoCallback"/>
		<tab idMso="TabRecent" getVisible="GereBoutonRecentCallback"/>
		<tab idMso="TabNew" getVisible="GereBoutonNFCallback"/>
		<tab idMso="TabPrint" getVisible="GereBoutonPrintCallback"/>
		<tab idMso="TabShare" getVisible="GereBoutonShareCallback"/>
		<tab idMso="TabHelp" getVisible="GereBoutonHelpCallback"/>
         	<button idMso="ApplicationOptionsDialog" getEnabled="GereAODCallBack"/>
      	<button idMso="FileExit" getEnabled="GereFileExitCallBack"/>
</backstage>
<!--
    <backstage>
		<button idMso="FileOpen" visible="false"/>
		<button idMso="FileClose" visible="false"/>
		<button idMso="FileSave" visible="false"/>
		<button idMso="FileSaveAs" visible="false"/>
     		<button idMso="ApplicationOptionsDialog" visible="false"/>
      	<button idMso="FileExit" visible="false"/>
		<tab idMso="TabPrint" visible="false"/>
		<tab idMso="TabShare" visible="false"/>
		<tab idMso="TabInfo" visible="false"/>
		<tab idMso="TabRecent" visible="false"/>
		<tab idMso="TabHelp" visible="false"/>
		<tab idMso="TabNew" visible="false"/>
    </backstage>
-->
</customUI>
"""
(la deuxième définition du "backstage" est en commentaire dans cet exemple)
J'ai mis la définition du "Backstage" en dernier, car j'ai lu que c'était nécessaire.

Dans le code VBA, chaque callback renvoie simplement une valeur vrai ou faux pour rendre le contrôle concerné visible/invisible.
Mon problème est que les "callbacks" associés au Backstage ne s'exécute pas sur la commande Invalidate Ruban, alors que les autres ("ribbon") fonctionnent très bien.

Par contre, si je rend la partie en commentaire active, les contrôles sont bien masqués dans le menu "Fichier", mais bien sûr dans ce cas ce n'est plus possible de les faire réapparaitre dynamiquement dans VBA. (ou en tout cas je ne sais pas comment on pourrait le faire).

Il y a sans doute quelque chose à faire différemment, ou a ajouter, mais je ne sais pas quoi, et n'ai pas réussi à trouver malgré de nombreuses recherches.

Merci, si quelqu'un a une idée pour m'aider.