IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

affichage partiel de boutons dans un ruban personnalisé


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 184
    Points : 164
    Points
    164
    Par défaut affichage partiel de boutons dans un ruban personnalisé
    Bonjour,

    j'essaie de faire une évolution d'un fichier excel existant.
    J'ai créé un ruban personnalisé avec un menu contenant des boutons.
    Ces boutons sont basés sur des boutons de CommandBar déjà présent.
    j'ai pu les rajouter à un menu dans un onglet créé.
    Mais là, je voudrais juste pouvoir n'afficher que quelques boutons spécifiques selon la feuille où je me trouve. lorsque je quitte cette feuille pour une autre, les boutons dispaissent pour laisser place à d'autres.
    J'imagine que dans customUI.xml, je dois rajouter aux boutons un getvisible.

    Je voudrais juste modifier le code suivant pour faire marcher la même chose avec les boutons du ruban. un comme comme convertir du code pour Commandbar à du code pour ruban.


    Code : 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
     
    Dim cbar As CommandBar, btn As CommandBarButton
     
    For Each btn In cbar.Controls
    action = Split(btn.OnAction, "!")(1)
                Select Case action
                    Case "sauver", "sauvegarder sous ", "annuler"
                        btn.visible = True
                    Case "lecture"
                        btn.visible = True
                    Case "modifier", "annuler"
                        btn.visible = True
                    Case Else
                        btn.visible = False
                End Select
     Next btn
    des codes assez similaire sont déjà présents dans mon code ailleurs.

    J'aimerai savoir si il était possible de remplacer cbar.Controls par quelque chose de similaire comme Office.IRibbonControl.

    Si je dois utiliser getvisible, j'imagine que je vais devoir créer une subroutine spécifique.

    Auriez-vous des idées car là je sèche?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Salut,

    attention à ne pas tout mélanger!

    Le ruban peut se programmer de 2 façons différentes:
    1 soit en utilisant les objets Commandbar, présents depuis les toutes premières version d'Office
    2- soit en utilisant la programmation par fichier de descripton xml, apparu avec la version 2007.

    Ton code utilise les objets Commandbar

    Mais quand tu parles de customUI.xml et de gerVisible, làa tu parles de la 2ième technique
    Il faut choisir!
    C'est soit Commandbar, soit xml.

    Si c'est xml, oui il faut que le tab(ou les boutons) aient l'attribut getVisible
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <button id="btnMaintenance" label="Maintenance" getVisible="btnMaintenance_GetVisible">
    et tu gères tes boutons dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub btnMaintenance_GetVisible(control As IRibbonControl, ByRef visible)
    Si c'est par code avec Commandbar, il faut que tu parcours la collection des contrôles jusqu'à tomber
    sur le bouton que tu veux masquer.

    Cordialement,

  3. #3
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 184
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    je vous rassure, je ne mélange pas tout.

    je fais une évolution d'un projet réalisé sous Excel par un tiers démarré il y a bien longtemps.
    Une partie a été réalisé par lui avec CommandBar avant l'apparition de la nouvelle méthode avec XML. On m'a demandé de compléter l'interface en créant un ruban personnalisé (menu contenant des boutons) réemployant les macros que lance les boutons utilisant l'approche commandBar.

    Donc, j'ai retravailler les macros et le reste mais la seule chose qui me pose problème c'est que certains boutons (du ruban XML) doivent disparaitre sur certaines pages pour laisser place à d'autres.

    J'aimerai bien savoir comment spécifier dés le chargement ou au moindre changement de feuille quels sont les boutons qui apparaissent ou disparaissent en lot. Cela existe déjà avec la méthode sous Commandbar mais j'ai besoin de mettre en place la version plus récente.
    La méthode getVisible est peut être efficace mais j'ai dû mal à m'en servir. Est-ce que je dois créer une fonction (pour getvisible) pour chaque bouton pour savoir si ils s'affichent ou pas.
    j'ai une quinzaine de boutons.

    En simplifiant:

    sur une feuille 1, j'ai les boutons btn1 et btn2 qui s'affichent. (pas le btn3)
    sur une feuille 2, j'ai les boutons btn2 et btn3 qui s'affichent. (pas le btn1)
    sur une feuille 3, j'ai les boutons btn1 et btn3 qui s'affichent. (pas le btn2)

    voilà.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Ok, j'ai compris.
    Voici un fichier avec la mécanique de base pour contrôler
    la visibilité des boutons en fonction de la feuille sélectionnée.
    Cordialement,
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 184
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    je vous remercie très sincèrement pour le document. votre approche est similaire à celle que j'envisageais dans mes réflexions. Je vais tester sur mon code.

    encore une fois merci
    Cordialement

  6. #6
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 184
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    je vous confirme que cela marche.

    Une fois encore, merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WB14] Affichage partiel des boutons
    Par jujudo24 dans le forum WebDev
    Réponses: 1
    Dernier message: 29/01/2010, 16h04
  2. [XL-2007] Assigner une icone dans le ruban personnalisé de'excel et lui attribuer une macro VBA
    Par Romanuche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/07/2009, 10h44
  3. Le format des images dans le ruban personnalisé
    Par nicolas2603 dans le forum IHM
    Réponses: 2
    Dernier message: 14/11/2008, 00h57
  4. [Excel2007] Gérer un Combobox dans un ruban personnalisé
    Par SilkyRoad dans le forum Contribuez
    Réponses: 3
    Dernier message: 01/12/2007, 11h50
  5. Réponses: 0
    Dernier message: 12/11/2007, 21h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo