Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2011, 13h41   #1
Membre du Club
 
Avatar de pio_killer
 
Inscription : novembre 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 163
Points : 54
Points : 54
Par défaut Ruban perso-Afficher une valeur specifique dans un dropdown

Bonjour

J'ai un problème.

Je voudrais mettre une valeur dans un dropdown (liste déroulante). Mon dropdown contient déjà des valeur. L'utilisateur doit en sélectionner une.

Mon problème vient du fait que j'actualise des fois le ruban dans mon programme et lorsque je le fais, cela efface la valeur que l'utilisateur a choisit.

Je voudrais remettre la valeur que l'utilisateur avait mis.

Est-ce quelqu'un sait comment résoudre ce problème ?

Je joint un exemple fait avec "Assistant ruban"

Ci-dessous le code XML :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_OnLoad">
    <ribbon startFromScratch="true">
        <tabs>
            <tab id="tab1" label="test">
                <group id="group1" label="test">
                    <button id="button1" label="Affiche" size="large" onAction="Ribbon_OnAction" imageMso="VisibilityVisible"/>
                    <button id="button2" label="Masque" size="large" onAction="Ribbon_OnAction" imageMso="ControlActiveX"/>
                    <dropDown id="dropDown1" getItemID="Ribbon_GetItemID" getItemLabel="Ribbon_GetItemLabel" getItemCount="Ribbon_GetItemCount" label="test" getVisible="Ribbon_GetVisible"/>
                    <button id="button3" label="Actualise" imageMso="FormatPainter" onAction="Ribbon_OnAction"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Ci-dessous le code vba à mettre dans un module :
Code :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Option Compare Database
 
Public objRuban As IRibbonUI
Public Affiche As Boolean
 
Sub Ribbon_OnLoad(ribbon As IRibbonUI)
    'Mettre la propriété "On Load" sur le ruban
 
    'On met affiche = vrai
    Affiche = True
 
    'Charge le ruban au démarrage dans la variable
    Set objRuban = ribbon
End Sub
Sub Ribbon_GetVisible(control As IRibbonControl, ByRef visible)
    'Affiche ou masque
    Select Case control.id
        Case "dropDown1" 'Liste
            visible = Affiche
    End Select
End Sub
Sub Ribbon_OnAction(ByVal control As IRibbonControl)
    Select Case control.id
        Case "button1" 'bouton affiche
            Affiche = True
        Case "button2" 'bouton masque
            Affiche = False
        Case "button3" 'bouton masque
    End Select
 
'Rafraichit le ruban personnalisé
Call UpdateRuban
End Sub
Sub Ribbon_GetItemCount(control As IRibbonControl, ByRef count)
    Select Case control.id
        Case "dropDown1" 'Liste des programmes
                count = 1
    End Select
 
End Sub
Sub Ribbon_GetItemID(control As IRibbonControl, index As Integer, ByRef id)
    Select Case control.id
        Case "dropDown1" 'Liste des programmes
                id = "item_test"
    End Select
End Sub
Sub Ribbon_GetItemLabel(control As IRibbonControl, index As Integer, ByRef label)
    Select Case control.id
        Case "dropDown1" 'Liste des programmes
                label = "item_test"
    End Select
End Sub
Sub UpdateRuban()
    'Rafraichit le ruban
    If Not objRuban Is Nothing Then objRuban.Invalidate
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
End Sub
Je joint aussi mon fichier exemple.

Si quelqu'un peut m'aider ?

Merci d'avance.
Fichiers attachés
Type de fichier : zip test_combo_box_v02.zip (21,2 Ko, 7 affichages)
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 07h58   #2
Membre du Club
 
Avatar de pio_killer
 
Inscription : novembre 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 163
Points : 54
Points : 54
Bon comme j'ai pu le constaté dans l'assistant ruban, c'est apparemment possible avec les combo box.

Seulement, je veux utiliser une liste dropdown parce que je ne veux pas que l'utilisateur puisse taper du texte dans le champ.
Avec la combo box, on peut taper du texte.

Si quelqu'un connait le moyen de ne bloquer que les touches du clavier et en laissant la possibilité de sélectionner un élément de la liste d'une combo box, je suis preneur.

Je n'ai pas trouvé dans les fonctions disponibles

Merci d'avance.
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 10h21   #3
Membre du Club
 
Avatar de pio_killer
 
Inscription : novembre 2008
Messages : 163
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 163
Points : 54
Points : 54
J'ai trouvé

J'ai utilisé une variable public pour mettre l'élement sélectionné et en la rappelant avec la fonction "GetSelectedItemID".

Voici le code XML :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_OnLoad">
    <ribbon startFromScratch="true">
        <tabs>
            <tab id="tab1" label="test">
                <group id="group1" label="test">
                    <button id="button1" label="Affiche" size="large" onAction="Ribbon_OnAction" imageMso="VisibilityVisible"/>
                    <button id="button2" label="Masque" size="large" onAction="Ribbon_OnAction" imageMso="ControlActiveX"/>
                    <dropDown id="dropDown1" getItemID="Ribbon_GetItemID" getItemLabel="Ribbon_GetItemLabel" getItemCount="Ribbon_GetItemCount" label="test" getVisible="Ribbon_GetVisible" onAction="Ribbon_OnAction_List" getSelectedItemID="Ribbon_GetSelectedItemID"/>
                    <button id="button3" label="Actualise" imageMso="FormatPainter" onAction="Ribbon_OnAction"/>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>
Voici le code vba à mettre dans une module :
Code :
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Option Compare Database
 
Public objRuban As IRibbonUI
Public Affiche As Boolean
Public TexteListe As String
 
 
Sub Ribbon_OnLoad(ribbon As IRibbonUI)
    'Mettre la propriété "On Load" sur le ruban
 
    'On met affiche = vrai
    Affiche = True
 
    'Charge le ruban au démarrage dans la variable
    Set objRuban = ribbon
End Sub
Sub Ribbon_GetVisible(control As IRibbonControl, ByRef visible)
    'Affiche ou masque
    Select Case control.id
        Case "dropDown1" 'Liste
            visible = Affiche
    End Select
End Sub
Sub Ribbon_OnAction(ByVal control As IRibbonControl)
    Select Case control.id
        Case "button1" 'bouton affiche
            Affiche = True
        Case "button2" 'bouton masque
            Affiche = False
        Case "button3" 'bouton masque
    End Select
 
'Rafraichit le ruban personnalisé
Call UpdateRuban
End Sub
Sub Ribbon_GetItemCount(control As IRibbonControl, ByRef count)
    Select Case control.id
        Case "dropDown1" 'Liste
                count = 1
    End Select
 
End Sub
Sub Ribbon_GetItemID(control As IRibbonControl, index As Integer, ByRef id)
    Select Case control.id
        Case "dropDown1" 'Liste
                id = "item_test"
    End Select
End Sub
Sub Ribbon_GetItemLabel(control As IRibbonControl, index As Integer, ByRef label)
    Select Case control.id
        Case "dropDown1" 'Liste
                label = "item_test"
    End Select
End Sub
Sub Ribbon_OnAction_List(control As IRibbonControl, itemID As String, itemIndex As Integer)
    Select Case control.id
        Case "dropDown1" 'Liste
                TexteListe = itemID
    End Select
End Sub
Sub Ribbon_GetSelectedItemID(control As IRibbonControl, ByRef index)
    Select Case control.id
        Case "dropDown1" 'Liste
            index = TexteListe
    End Select
End Sub
Sub UpdateRuban()
    'Rafraichit le ruban
    If Not objRuban Is Nothing Then objRuban.Invalidate
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
End Sub
Si ça peut aider quelqu'un, on ne sait jamais.
pio_killer est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h24.


 
 
 
 
Partenaires

Hébergement Web