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

et Vive toi Jean-Eric

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+

Rechercher des sujets similaires à "afficher masquer onglet personnalise ruban feuille"