Afficher/Masquer onglet personnalisé ruban selon feuille
Bonjour à tous
Je n'ai pas réussi à trouver la solution (s'il en existe une) pour afficher ou masquer un onglet personnalisé du ruban selon la feuille activée
Dans mon CustomUI j'ai bien tenté un truc du style
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RubanCharge">
<ribbon startFromScratch="false">
<tabs>
<tab idMso="TabInsert" visible="false"/>
<tab idMso="TabPageLayoutExcel" visible="false"/>
<tab idMso="TabFormulas" visible="false"/>
<tab idMso="TabData" visible="false"/>
<tab idMso="TabReview" visible="false"/>
<tab idMso="TabView" visible="false"/>
<tab idMso="TabAddIns" visible="false"/>
<tab id="OngletFacture" label="Gestion Facture" insertBeforeQ="TabHome" getVisible="TabFacture_visible">
.....
<tab id="OngletAvoir" label="Gestion Avoir" insertBeforeQ="TabHome" getVisible="TabAvoir_visible">
Et dans mon classeur j'ai
' Callback for getVisible
Sub TabAvoir_visible(control As IRibbonControl, ByRef returnedVal)
returnedVal = (ActiveSheet.Name = "AVOIR")
End Sub
Sub TabFacture_visible(control As IRibbonControl, ByRef returnedVal)
returnedVal = (ActiveSheet.Name = "FACTURE")
End Sub
Le problème c'est que ça ne fonctionne que sur le OnLoad
Or, j'aimerais qu'en sélectionnant la feuille "AVOIR" ou "FACTURE", je ne puisse avoir que l'onglet correspondant
Si quelqu'un sait, qu'il n'hésite pas à me donner la solution
A+
Bonjour,
Je pense que tu connais le lien, mais je le mets comme même.
https://www.rondebruin.nl/win/section2.htm
Sinon, je n'ai pas vraiment d'éléments à t'apporter.
Je me suis amusé il y a quelques années à jouer avec le Ribbon, mais il faut avouer que cela n'est pas simple et demande un certain travail !...
Bonne continuation.
Cdlt.
Salut Jean-Eric,
Merci pour le lien et oui je connais
Je me suis amusé il y a quelques années à jouer avec le Ribbon, mais il faut avouer que cela n'est pas simple et demande un certain travail
Oui c'est clair, je voulais faire un truc un peu plus "professionnel" mais je suis confronté à un certain nombre d'ennuis
Au plaisir
En fouillant un peu sur le site Ron de Bruin, j'ai enfin trouvé le bon exemple et pu l'appliquer en utilisant "tag"
Dans mon CustomUI
?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="RubanCharge">
<ribbon startFromScratch="false">
<tabs>
<tab idMso="TabInsert" visible="false"/>
<tab idMso="TabPageLayoutExcel" visible="false"/>
<tab idMso="TabFormulas" visible="false"/>
<tab idMso="TabData" visible="false"/>
<tab idMso="TabReview" visible="false"/>
<tab idMso="TabView" visible="false"/>
<tab idMso="TabAddIns" visible="false"/>
<tab id="OngletFacture" label="Gestion Facture" insertBeforeQ="TabHome" getVisible="GetVisible" tag="ribfacture">
....
<tab id="OngletAvoir" label="Gestion Avoir" insertBeforeQ="TabHome" getVisible="GetVisible" tag="ribavoir">
Dans un module
Option Explicit
Dim Rib As IRibbonUI
Public MyTag As String
'Callback for customUI.onLoad
Sub RibonOnLoad(ribbon As IRibbonUI)
Set Rib = ribbon
End Sub
Sub GetVisible(control As IRibbonControl, ByRef visible)
If control.Tag Like MyTag Then
visible = True
Else
visible = False
End If
End Sub
Sub RefreshRibbon(Tag As String)
MyTag = Tag
If Not Rib Is Nothing Then Rib.Invalidate
End Sub
Et dans ThisWorkbook
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
If Sh.Name = "AVOIR" Then
Call RefreshRibbon(Tag:="ribavoir")
ElseIf Sh.Name = "FACTURE" Then
Call RefreshRibbon(Tag:="ribfacture")
Else
Call RefreshRibbon(Tag:="")
End If
On Error GoTo 0
End Sub
Si je sélectionne ma feuille "AVOIR", dans mon ruban, j'ai uniquement l'onglet "Gestion Avoir" et l'onglet "Accueil"
Si je sélectionne ma feuille "FACTURE", dans mon ruban, j'ai uniquement l'onglet "Gestion Facture" et l'onglet "Accueil"
Sinon, j'ai juste l'onglet "Accueil"
Et voilà
Merci et A+