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 :

IRibbonControl : récupérer un "control" du ruban en fonction de son ID [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut IRibbonControl : récupérer un "control" du ruban en fonction de son ID
    Bonjour,

    j'ai crée un ruban personnalisé suivant le tutoriel de Silkyroad

    j’obtiens donc ceci :



    J'arrive sans problème a modifier l'état (checked/unchecked) des checkboxes qui sont dans le ruban quand la valeur d'une cellule change (en l’occurrence la cellule contenant Oui/Non associée).

    Cependant pour manipuler les controls j'ai jusqu'à présent utilisé des procédure de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub MaProcedure(control as IRibbonControl, [...])
     
    [...]
     
    End Sub
    J'avais donc a ma disposition le control en argument.


    Ce que je désire faire maintenant c'est, au lancement du classeur Excel, pouvoir mettre l'état des checkboxes à checked si la cellule associée est à oui (et à unchecked si la cellule associée est à non). Pour ce faire, il me faut pouvoir récupérer l'objet control des checkboxes. Savez-vous s'il y a une fonction (ou tout autre moyen) pour obtenir l'objet en fonction de son ID?

    D'avance merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 38
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Pas sûr d'avoir bien compris la question : n'est-ce pas justement ce qui est expliqué au chapitre V du tutorial en question...

    Fonction de rappel Onload mis en première ligne du Xml ruban, toutes les fonctions du tutorial et le bout de code ci-dessous à mettre dans les feuilles contenant les valeurs du 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
    Option Explicit
     
    'Evenement Change dans la feuille de calcul.
    Private Sub Worksheet_Change(ByVal Target As Range)
        'Vérifie si la cellule A1 est modifiée et si la cellule contient la valeur 1.
        If Target.Address = "$A$1" And Target = 1 Then
            boolResult = True
        Else
            boolResult = False
        End If
     
        'Rafraichit le bouton personnalisé
        If Not objRuban Is Nothing Then objRuban.InvalidateControl "Bouton1"
    End Sub
    en complément s'il y a besoin de faire une initialisation à l'ouverture du classeur il suffit de générer dans l'objet "ThisWorkBook" la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    ' Mise à jour de toutes les check box en fonction des cellules destination
    end Sub
    Ais-je répondu à la question ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    merci pour ces précisions mais ce n'est pas exactement ce que je recherche.

    Je cherche au lancement du classeur à mettre la checkbox Titre à checked si la cellule K42 est à oui et à unchecked si elle est à non.

    Si je mets dans la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_Open()
    If Sheets("Listes").Range("K42").Value = "Oui" Then    
            boolResult = True  
        Else
            boolResult = False
        End If
     
     
        If Not objRuban Is Nothing Then objRuban.InvalidateControl "CBTitre"
    end Sub
    La checkbox se désactive quelque soit la valeur de la cellule K42. Par ailleurs je ne trouve pas la procédure/propriété qui permet de modifier l'état de la checkbox.

    En fait ce qu'il me faudrait c'est un handle vers la checkbox afin que je puisse la manipuler.

    J'espère ne pas passer à coté d'une solution évidente.

    Merci

    Rebonjour,

    j'ai expérimenté de mon coté et je pense avoir trouvé une bonne piste.

    Pour l'instant j'arrive à activer ou désactiver au lancement les checkboxes. Ce que je veux maintenant c'est pouvoir non pas les activer/désactiver mais les checker/unchecker.

    Mais dans l'exemple il s'agit d'activer le bouton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Bouton1_Enabled(control As IRibbonControl, ByRef returnedVal)
        returnedVal = boolResult
    End Sub
    Où peut on trouver plus d'infos sur le widget checkbox?

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Bouton1=True
    Bouton1=False

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Je ne comprend pas bien votre réponse. Qu'est-ce que Bouton1? Dois-je le déclarer? Est il déclaré dans le xml?

    N'y a-t-il pas moyen de faire quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controle("idDuControle").Checked = True
    ?

  6. #6
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Points : 2 553
    Points
    2 553
    Par défaut
    si controle est un objet checkbox,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Controle("idDuControle")=true
    devrait marcher

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2013
    Messages
    11
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Pour ceux qui à l'avenir passeront sur ce topic

    la réponse se trouve ici : http://www.excelforum.com/excel-prog...is-closed.html

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

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