Bonjour,

Je cherche en vain depuis plusieurs jours à réaliser mon projet et je sèche sur la partie la plus basique ... remettre à zéro les ComboBox & dropDown de mon ruban.

La première liste qui fonctionne sans problème mais qui reste sur le choix sélectionné (en dur dans le XML car le classeur contient ses feuilles dès le départ)

De ce fait, si on choisit dans la liste, la feuille Aide, que l'on change d'onglet et que l'on souhaite de nouveau accèder à la feuille Aide, il faut changer deux fois la liste Go to (une première fois pour quitter le choix Aide, et une seconde fois pour y retourner). J'aimerai du coup, remettre le choix à zéro une fois l'action ChangeCB1 réalisée.

La seconde liste est dynamique car elle ne doit lister que les feuilles visibles de personnes (prénom nom -> qui contiennent donc toujours un espace)
Là encore, le choix réalisé reste actif (attention, je débute en VBA et XML donc c'est de la bidouille pour commencer le listing à la feuille 4 (3 visibles + 1 cachée)).

Par ailleurs, impossible de faire fonctionner vba invalidateContentOnDrop="true" dans mon xml sous peine d'invalider l'onglet en question. Du coup, quand j'ajoute une personne à mon classeur, via une macro séparée ou en ajoutant manuellement la feuille, la liste des personnes ne s'actualise pas, à mon grand désarroi

A noter que mon classeur contient également une feuille cachée que je ne souhaite pas lister.

Ci-dessous le code des deux listes (celle qui est dynamique [ListePersonne] et l'autre codée en dur [CB1])

XML
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
<group id="GR1" label="Navigation">
				<comboBox id="CB1" label="Go to" onChange="ChangeCB1" > 
				<item id="it1" label="Sommaire" imageMso="AccessTableContacts" /> 
				<item id="it2" label="Synthèse" imageMso="ChartPlotArea" /> 
				<item id="it3" label="Aide" imageMso="Help" /> 
				</comboBox>
				<dropDown 
                        id="ListePersonne"
                        label="Nom complet"
                        sizeString="WWWWWWWWWWWW"
                        supertip="Permet d'aller directement à la feuille sélectionnée dans la liste déroulante !"
                        getItemCount="ItemCount"
                        getItemLabel="ListItem"
			getVisible="TesteCondition"
                        onAction="Item_Selected" />
			</group>
VBA
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
Option Explicit
 
Sub ItemCount(control As IRibbonControl, ByRef returnedVal)
    Dim lCount As Long
    Dim wksSheet As Worksheet
    'Set mwkbNavigation = ThisWorkbook
    For Each wksSheet In ThisWorkbook.Worksheets
        If wksSheet.Visible = xlSheetVisible And wksSheet.Name Like "* *" Then
            lCount = lCount + 1
        End If
    Next wksSheet
    returnedVal = lCount
End Sub
Sub ListItem(control As IRibbonControl, index As Integer, ByRef returnedVal)
    If ThisWorkbook.Worksheets(index + 1).Visible = xlSheetVisible Then
        returnedVal = ThisWorkbook.Worksheets(index + 4).Name
    End If
End Sub
 
Sub Item_Selected(control As IRibbonControl, label As String, index As Integer)
        Sheets(ThisWorkbook.Worksheets(index + 4).Name).Select
End Sub
 
 
'N'affiche pas la liste des personnes si le nombre d'onglets est inférieur à 4
Sub TesteCondition(control As IRibbonControl, ByRef returnedVal)
    returnedVal = ThisWorkbook.Sheets.Count > 4
End Sub
 
Sub ChangeCB1(control As IRibbonControl, text As String)
    Sheets(text).Activate
End Sub
Depuis le temps que je galère avec différents tests : combobox, dropDown, ... je m'en remets aux dieux du XML et VBA pour m'aider à corriger mes quelques problèmes

Merci