Apparition d'un onglet personnalisé du ruban en lançant une application

Bonjour à tous,

Dans mon application "Comptes", j'ai personnalisé le ruban en créant un onglet que j'ai nommé "Budget".

Quand je lance une autre application Excel, cet onglet "Budget" apparaît également dans le ruban alors qu'il n'a pas à être présent (puisqu'il s'agit d'une autre application).

Alors, à chaque fois, je vais dans Fichier > Options > Personnaliser le ruban > Je coche ou je décoche mon onglet "Budget" selon mes besoins.

Comment faire pour que mon onglet "Budget" apparaisse uniquement lorsque je lance mon application "Comptes" ?

Merci de vos réponses.

Bonjour

Il faut utiliser Custom UI editor pour associer cet onglet au fichier Comptes afin qu'il apparaisse à son ouverture et disparaisse à sa fermeture

Tu as des explications dans ce fichier https://excel-downloads.com/attachments/162577d1285695245-creation-donglets-personnalises-dans-excel...

Bonjour Chris,

Merci de m'avoir répondu : je vais prendre le temps de bien comprendre ce Custom UI Editor... Cela me paraît un peu ardu cependant.

Mais en titre, je lis "Petit guide pour créer des onglets personnalisés dans Excel 2007 et 2010" : or j'utilise Excel 2019 ! Est-ce que cela ne posera pas de problème ?

D'autre part, le lien indiqué dans le fichier http://openxmldeveloper.org/attachment/239.ashx me signale une page introuvable !

Et enfin, un internaute précise "Depuis la mise à jour de mon ordinateur vers windows10, Custom UI Editor ne peut plus s'installer."

Je crains que ce logiciel ne soit devenu obsolète... Existe-t-il une nouvelle version compatible avec Windows 10 ?

Bonjour

La dernière version est ici https://github.com/fernandreu/office-ribbonx-editor/releases/tag/v1.9.0

Prendre celle avec dotnet incorporé

Bonjour Chris,

"Prendre celle avec dotnet incorporé" : où est cette version ?

Bon, ok ! Je vais m'y mettre, hein ! Maintenant, y a plus qu'à...

A la première lecture (succincte), avec Office Ribbon, on peut modifier le ruban d'une application Excel avec des onglets personnalisés.

On peut aussi, d'après votre post, les "associer" à l'ouverture d'une application et les faire "disparaître" à la fermeture, et c'est là l'objet de ma question d'origine !

Cela demande un certain "savoir-faire" ! Et j'espère "savoir le faire" dans un proche avenir !

En tout cas, merci encore de m'avoir répondu et de m'avoir apporté une solution.

RE

Il n'y a rien à faire juste ajouter la mention control As IRibbonControl dans les macros liées aux boutons comme expliqué page 5 du Word

L'onglet étant codé dans le fichier il apparait et disparait automatiquement en fonction de l’ouverture ou fermeture du classeur

Exemple sur un de mes classeurs

image

dès que je ferme le classeur l'onglet Cartes disparait

Bonjour Chris,

A titre expérimental, j'ai créé un onglet "Géométrie" avec plusieurs groupes et leurs macros :

image

Selon le document explicatif Word, j'ai ajouté la mention « (control As IRibbonControl) » à chacune des macros, dans mon éditeur VBA d'Excel.

Exemple :

Sub Dessine_Cercle(control As IRibbonControl)
'
    ActiveSheet.Shapes.AddShape(msoShapeOval, 333.75, 98.25, 265.5, 250.5).Select
'
End Sub

Je coince sur le point n°2 du document Word : « 2) Maintenant, générez votre code (merci au copier-coller) »

J'ai essayé de copier-coller les macros dans Office Ribbon X Editor, mais rien ne se colle ! Comment faire pour générer le code ?

Merci de votre aide.

Salut à tous,

Pour ma part je gère toujours les contrôles du ruban de la même manière exemple ce bouton :

<button id="btnAbout"
        size="large"
        label="A propos"
        screentip="A propos."
        supertip="Informations sur l'application."
        imageMso="About"
        tag="RibbonName:=;inMenu:=;CustomTagValue1:=;CustomTagValue2:=;CustomTagValue3:=;CustomPicture:=;CustomPicturePath:="
        onAction="OnActionButton"
        getVisible="GetVisible"
        getEnabled="GetEnabled"/>

Je gère onAction, getVisible, et getEnabled, j'appelle toujours les même procédures, je gère ensuite les différents boutons avec un Select Case.

Exemple dans un module que je nomme Callbacks j'ai les procédure du ruban :

'@Description "Définit la procédure VBA qui doit être déclenchée lors du chargement du ruban."
Public Sub OnRibbonLoad(Ribbon As IRibbonUI)
    Set mUIRibbon = Ribbon
    mUIRibbon.ActivateTab "tab0"
    ' // Save the Ribbon Handle
    'ExcelProperties.SetProperty "RibbonHandle", CStr(ObjPtr(mUIRibbon)), msoPropertyTypeNumber
End Sub

'@Description "Spécifie une valeur booléenne qui indique si le contrôle doit être activé (true ou 1) ou désactivé (false ou 0)."
Public Sub GetEnabled(Control As IRibbonControl, ByRef Enabled)
    Select Case Control.ID

        Case Else
            Enabled = True
    End Select
End Sub

'@Description "Renvoie une valeur booléenne qui indique si le contrôle est visible (true) ou masqué (false)."
Public Sub GetVisible(Control As IRibbonControl, ByRef Visible)
    Select Case Control.ID

        Case Else
            Visible = True
    End Select
End Sub

'@Description "Déclenchée lorsque vous cliquez sur le contrôle afin de l'utiliser."
Public Sub OnActionButton(Control As IRibbonControl)
    Select Case Control.ID

        Case Else
            Debug.Print "Case """; Control.ID; """" ' vbTab; "' "; Control.Tag; """"      ' // cette ligne crée automatiquement la section case avec le nom du contrôle ;)
    End Select
End Sub

Tu remarquera que les Case ne sont pas remplie, quand tu va cliquer sur les boutons cela va créer les case pour tes Select dans la fenêtre d'exécution.

000452

Tu n'as plus qu'a faire un copier coller aux endroits que tu veux.

'@Description "Déclenchée lorsque vous cliquez sur le contrôle afin de l'utiliser."
Public Sub OnActionButton(Control As IRibbonControl)
    Select Case Control.ID
               Case "btnAbout"
                     '  // Lance la fenêtre d'aide
                     Ribbon.RunInformationsForm

               Case "btnHelpMicrosoft"
                      ' // Lance l'explorateur sur l'aide Microsoft
                     Ribbon.RunHelpMicrosoftLink

               Case "btnRunMacro"
                     ' // Lance une procédure
        Case Else
            Debug.Print "Case """; Control.ID; """" ' vbTab; "' "; Control.Tag; """"      ' // cette ligne crée automatiquement la section case avec le nom du contrôle ;)
    End Select
End Sub

Ensuite je créer un module Ribbon par exemple qui regroupe les fonctions et procédures d'action des contrôles (Exemple sur le bouton About ci-dessus)

Module Ribbon :

'@IgnoreModule
'@Folder "Ribbon management"
Option Explicit

Public Sub RunInformationsForm()
    Dim localForm As InformationsClasseur
    Set localForm = New InformationsClasseur
    With localForm
        .Show
    End With
End Sub

Public Sub RunHelpMicrosoftLink()
    ThisWorkbook.FollowHyperlink Address:="https://learn.microsoft.com/fr-fr/office/vba/api/overview/", NewWindow:=True
End Sub

Voilà, si cela t'intéresse je peux t'en dire plus, et te donner l'intégralité du module Callbacks qui regroupe les procédures des contrôles les plus utilisés.

Bonjour

Tu as bien collé le code dans un module standard du classeur modifié par l'outil Office Ribbon X Editor ?

L'outil ajoute la définition de l'onglet et chaque onaction est suivi du nom de la sub que tu dois mettre dans un module VBA.

Le code est à mettre dans un module VBA du classeur depuis Excel (Module1)

Bonjour Chris,

Je galère...

Dans Excel, je viens de "copier" tout le code VBA de "Géométrie" avec la mention "(control As IRibbonControl)" à chaque macro.

Dans Office RibbonX Editor, j'ai "ouvert" le fichier "Géométrie.xlsm" qui s'affiche :

image

J'essaie de "coller" le code VBA, mais je n'y arrive pas. Qu'est-ce que je dois faire à ce stade ?

Tu écris dans ton post précédent : "Tu as bien collé le code dans un module standard du classeur modifié par l'outil Office Ribbon X Editor ?"

Qu'est-ce qu'un module standard ? Comment le modifier avec Office Ribbon X Editor ?

Merci à Jean-Paul de m'avoir répondu de manière aussi circonstanciée : j'y reviendrai, j'ai besoin de temps pour bien comprendre la manière de faire et je ne doute pas y parvenir avec ton aide...

Pour l'instant, je cherche une solution avec les propositions de 78Chris.

Merci encore.

RE

Tu ne dois rien coller dans l'UI editor.

L'UI Editor ne contient que les infos qui décrivent le ruban, le nom des macros appelées par chacun des boutons, éventuellement des icônes importées.

Le code doit être, comme déjà dit stocké, dans un module standard du classeur Géometrie.xlsm (qui est le classeur modifié par UI Editor pour y décrire un ruban adapté)

Qu'est-ce qu'un module standard ? Comment stocker le code dans le module standard ?

RE

Ouvres Gémoétrie.xlsm Alt F11, fais une copie d'écran et postes-là

image

RE

Cela semble OK et dans Module1

Ton code est bien activé ? Si oui que se passe-t-il quand tu cliques sur un bouton ?

Il existe

  • le module du classeur (ThisWorkbook),
  • les modules de feuilles (1 par onglet),
  • les modules standard
  • les modules de classe

Quand tu demandes à insérer un module tu as le choix entre les 2 derniers, les autres existant déjà mais vides au départ.

Avant de mettre la mention "(control As IRibbonControl)" à chacune de mes macros, à chaque clic sur un bouton apparaissait la figure géométrique correspondante.

image

Après avoir mis cette mention à toutes les macros, à un clic sur une macro, la page du module s'affiche et j'ai un message d'erreur :

image

Bonsoir ChrisBlues, Le Fil,

Apparemment pas de souci pour le test Oval.

image

Voir fichier ci-dessous pour faire le test.

30classui.xlsm (14.12 Ko)
image
Rechercher des sujets similaires à "apparition onglet personnalise ruban lancant application"