Prédéfinir l'item d'une ComBox d'un menu personnalisé (dans CustomUI.xml) Excel 2010

paoloadv

XLDnaute Nouveau
Bonjour,
Je n'arrive pas à réaliser une opération "banale" dans un menu personnalisé contenant une combobox qui se charge dynamiquement.

Comment initialiser la combobox à un item précis de la liste chargée ?
Par exemple si la liste contient les items {"toto","titi","tata"}, comment faire pour que, à l'ouverture du classeur et après chargement du menu personnalisé, l'item par défaut sélectionné de la combobox soit par exemple "titi" ?
Je n'ai pas trouvé de solution directe (sinon de passer par un affichage d'un label dont la valeur est celle de la sélection par défaut de la combobox (invisible au début), et au clic sur ce label faire afficher dynamiquement le menu de sélection de la combobox pour un changement d'item qui mettra à jour la valeur du label par défaut. Le menu de combobox est ensuite caché dynamiquement en fin de sélection).

Par exemple dans le code habituel suivant, je n'ai aucun moyen de spécifier l'item selectionné par défaut à la combobox...

Dans le fichier XML:

HTML:
<customUI xmlns="" onLoad="RubanCharge"
>
<ribbon startFromScratch="false">
<tabs>
<tab id="OngletPerso" label="OngletPerso" visible="true">
   <group id="Projet01" label="Projet 01">
      <comboBox
            id="Combo1"
            label="Choix : "
            getItemCount="NbItemCombo"
            getItemLabel="ComboLabel"
             onChange="ChangeCombo1" />
   </group>
</tab>
</tabs>
</ribbon>
</customUI>

Dans un module standard:
VB:
Option Explicit
 
Public MonRuban As IRibbonUI
 
'Callback for customUI.onLoad
'Est déclenché lors du chargement du ruban personnalisé.
Sub RubanCharge(ribbon As IRibbonUI)
    Set MonRuban = ribbon
End Sub
 
 
'Callback for Combo1 getItemCount
Sub NbItemCombo(control As IRibbonControl, ByRef returnedVal)
    'Définit le nombre d'éléments dans la combobox
    returnedVal = Worksheets("Feuil1").Range("A1").End(xlDown).Row
End Sub
 
 
'Callback for Combo1 getItemLabel
'Index est défini par la valeur saisie dans Sub NbItemCombo (=4)
Sub ComboLabel(control As IRibbonControl, index As Integer, ByRef returnedVal)
 
    'Alimente le Combobox à partir des données de la Feuille1
     returnedVal = Worksheets("Feuil1").Cells(index + 1, 1)
End Sub
 
 
'Callback for Combo1 onChange
Sub ChangeCombo1(control As IRibbonControl, text As String)
    'Renvoie l'élément sélectionné dans la combobox
    MsgBox text
End Sub


Dans le module objet de la feuille contenant les données:
VB:
Sub ChangeCombo1(control As IRibbonControl, text As String)
    'Renvoie l'élément sélectionné dans la combobox
    MsgBox "Item sélectionné: " & text
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla