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

IHM Discussion :

Remettre à blanc un comboBox sur le ruban [AC-2010]


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut Remettre à blanc un comboBox sur le ruban
    Bonjour,

    J'ai un combo box qui contient la liste des mois de l'année.
    Lorsque j'ouvre un formulaire le combo box est vide.
    Par contre si j'ouvre le combo et que je choisis un mois, celui-ci reste visible.
    Par exemple si je clique sur mai, un formulaire affiche des données du mois de mai.
    Je ferme ce formulaire et si je veux ouvrir de nouveau celui-ci, le combo box m'affiche toujours le mois de mai et il faut que je clique sur un autre mois, pour avoir de nouveau accès au mois de mai.
    J'aurais voulu, lorsque je quitte le formulaire que le combo box, n'affiche plus rien.
    Voici la fonction utilisée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub onChangeMois(control As IRibbonControl, ListeMois As String)
    Select Case control.Id
            Case "cmbMois"
            SelectionMois = ListeMois
     If ListeMois = "mai" Then
                NumMois = 5
                Set rst5 = maBD.OpenRecordset("qryAchatsGlobauxMai", dbOpenDynaset)
                If rst5.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de mai!", vbCritical, "Achats globaux mai"
                    Exit Sub
                End If
    Donc, le combo box affiche toujours mai.
    Est-ce seulement possible de revenir au point de départ avant qu'on ne clique sur le combo box?
    D'avance merci,
    @+
    Guy FALESSE

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 611
    Points : 34 287
    Points
    34 287
    Par défaut
    Salut,

    je ne comprends pas tout à fait ton soucis, mais tu peux toujours mettre la valeur de ta combobox à Null, ou alors mettre son rowsource à ""...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut jpcheck,

    Merci de ta réponse.
    J'ai essayé de faire selectionMois="" sans succès;
    Évidemment, on ne sait pas programmer ce combo box comme en VBA, puisque il est destiné au ruban.
    Lorsque je clique sur l'onglet AchatsGlobaux, j'ai accès à 2 boutons et au combo box dont la fenêtre est vide à ce moment.
    Lorsque je clique sur ce combo box, j'ai la liste des mois qui s'affiche, lorsque je clique sur un mois (mai) , cette action ouvre un formulaire, mais ce mois reste affiché en permanence, je peux cliquer sur un autre onglet, rien ne change et si je reclique sur le mois de mai, rien ne se passe, il faut cliquer sur un autre mois et ainsi de suite, jusqu'à la fermeture d'Access.
    Pas facile ces rubans.
    Je ne vois pas comment mettre le rowSource à null, je ne sais même pas si une commande de ce type existe dans le ruban.
    Je ne sais pas m'expliquer autrement.
    @+
    Guy FALESSE

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Guy FALESSE Voir le message
    Est-ce seulement possible de revenir au point de départ avant qu'on ne clique sur le combo box?
    Oui, il faut invalider le contrôle comboBox. Ça le force à appeler getText.

    Déclarer la fonction de rappel avec l'attribut getText.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            <comboBox id="cmbMois"
                      ...
                      onChange="onChangeMois"
                      getText="onGetTextMois" />
    Déclarer une variable globale pour décider quand il faut blanchir le contrôle cmbMois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public bBlanchir_cmbMois As Boolean
    La fonction de rappel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' GetText : Pour comboBox
    ' Appelé par le ruban pour le texte à afficher dans la zone de texte de la comboBox.
    ' Si on n'affecte rien à la variable text, c'est le texte du label qui sera affiché.
    Sub onGetTextMois(control As IRibbonControl, ByRef text)
    Select Case control.ID
        Case "cmbMois"
            If bBlanchir_cmbMois Then
               text = ""
               bBlanchir_cmbMois = False
            End If
    End Select
    End Sub
    Quand tu veux blanchir la comboBox, affecte True à bBlanchir_cmbMois, puis invalide le contrôle cmbMois.

    A+

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Bonjour LedzepII,

    J'ai tenté de faire tout ce que tu m'as dit, mais, j'ai dû oublier quelque chose.
    Je n'ai pas de message d'erreur, mais ça ne fonctionne pas

    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
    Select Case control.Id
            Case "cmbMois"
            SelectionMois = ListeMois
            If ListeMois = "Janvier" Then
                NumMois = 1
                Set rst1 = maBD.OpenRecordset("qryAchatsGlobauxJanvier", dbOpenDynaset)
                If rst1.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de janvier!", vbCritical, "Achats globaux janvier"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""1"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
                If bBlanchir_cmbMois Then
                    text = ""
                    bBlanchir_cmbMois = True
                End If
            End If
    Quand tu veux blanchir la comboBox, affecte True à bBlanchir_cmbMois, puis invalide le contrôle cmbMois

    C'est là que je foire sans doute, je ne sais pas comment faire.
    @+

    Guy FALESSE

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Salut LedZepII,

    En fait, j'ai un deuxième combo box vide qui s'affiche, je ne sais pas encore pourquoi.
    Je cherche.
    @+
    Guy FALESSE

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Quand tu veux blanchir la comboBox, affecte True à bBlanchir_cmbMois, puis invalide le contrôle cmbMois.
    c'est simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bBlanchir_cmbMois = True
    oMonRuban.InvalidateControl "cmbMois"
    oMonRuban est une variable objet qui pointe sur le ruban (voir Agir dynamiquement sur le ruban)

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut LedZeppII

    Plus rien ne va, même, lorsque je clique sur un mois, le formulaire qui devrait s'ouvrir ne s'affiche plus.
    Je pense bien avoir fait une belle "touillette"
    Voici le code que j'ai en 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
    17
    18
    19
    20
    21
    22
    23
    24
    <!--Achats globaux -->
    		<tab id="achatsGlobaux" label="Achats globaux" visible="true">
    			<group id="idAchatsGlobaux" label="Les achats globaux">
    				<box id="id_AchatsGlobaux" boxStyle="vertical">
    				<button id="Achats_globaux" imageMso="FileOpenDatabase" label="Voir les achats globaux" size="normal" onAction="action_Ouvrir_frmAchatsGlobaux"/>
    				<button id="DépensesParDates" imageMso="DataTypeTime" label="Calendrier Dépenses" size="normal" onAction="action_Ouvrir_frmDateDépenses"/>
    				<comboBox  id="cmbMois1" label="Liste Mois:" getItemCount="getMoisCount" getItemLabel="getMoisLabel" getText="onGetTextMois" onChange="onChangeMois"/>
    				<!--<comboBox id="cmbMois" onChange="onChangeMois" getText="onGetTextMois"/>-->
    				</box>
    	            <!-- Filtrer -->
    				<separator id="sepBeforeSort_2" />
    				<toggleButton idMso="SortUp" />
    				<toggleButton idMso="SortDown" />
    				<button idMso="SortRemoveAllSorts" />
    				<!-- Trier -->
    				<separator id="sepBeforeFilter_2" />
    				<menu idMso="SortSelectionMenu" />
    				<toggleButton idMso="FilterToggleFilter" />
    			</group>	
    		</tab>		
    		<!-- fin achats globaux -->
    		</tabs>
        </ribbon>
    </customUI>
    Voici le code en 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
      Select Case control.Id
            Case "cmbMois"
            SelectionMois = ListeMois
            If ListeMois = "Janvier" Then
                NumMois = 1
                Set rst1 = maBD.OpenRecordset("qryAchatsGlobauxJanvier", dbOpenDynaset)
                If rst1.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de janvier!", vbCritical, "Achats globaux janvier"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""1"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
                If bBlanchir_cmbMois Then
                   text = ""
                   bBlanchir_cmbMois = True
                End If
                rubanAAA.InvalidateControl "cmbMois"
            End If
    Je suis vraiment désolé
    @+
    Guy FALESSE

  9. #9
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    J'ai fait une base exemple. Ça sera peut-être plus compréhensible :
    ExempleRibbonCombo.zip

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut LedZeppII,

    Nous courriers se sont croisés.
    Merci pour la base, je la télécharge de suite et te tiens au courant.

    @+

    Guy FALESSE

  11. #11
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    On a posté au même moment

    Tu as renommé ta comboBox cmbMois1, c'est surement pour ça que ça fonctionne pas du tout.
    Remets le nom d'origine : cmbMois

    Dans la partie code VBA, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                If bBlanchir_cmbMois Then
                   text = ""
                   bBlanchir_cmbMois = True
                End If
                rubanAAA.InvalidateControl "cmbMois"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                bBlanchir_cmbMois = True
                rubanAAA.InvalidateControl "cmbMois"

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Salut LedZeppII,

    Super, ça marche à merveille.
    Un grand merci
    Que c'est compliqué tout de même, enfin, pour moi
    Je vais, maintenant étudier ta base.
    Bonne soirée et @+
    Guy FALESSE

  13. #13
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Salut LedZeppII,

    Je viens de regarder ta base, je n'ai pas encore compris grand chose, il faut que je me concentre sur les variables que tu utilises.:-)
    Mais, je ne perds pas espoir.:-)
    @+ et encore merci
    Guy FALESSE

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Salut LedZeppII,

    Je ne sais pas si je fais bien de poser une nouvelle question ici.
    Je me lance tout de même:
    Comment ajuster la longueur d'un combo box en fonction des éléments qu'il contient.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub getRayonsCount(control As IRibbonControl, ByRef count)
        Set oRst = CurrentDb.OpenRecordset("SELECT * FROM tblRayons;")
        'Récupère le nombre d'enregistrements
       With oRst
            .MoveLast
            count = .RecordCount
            .MoveFirst
           ' MsgBox ("") & count
        End With
    End Sub
    Ici, j'ai 29 enregistrements dans la table tblRayons, mais je suis obligé d'avoir un ascenseur pour parcourir le combo box.
    D'avance merci.
    @+
    Guy FALESSE

  15. #15
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour Guy,

    Je dirai qu'on ne peut pas préciser la hauteur d'un contrôle comboBox.
    Je ne vois aucun attribut allant dans ce sens.
    Même chose pour le contrôle dropDown.

    A+

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut LedZeppII,

    Merci pour la réponse.
    Ce n'est pas grave, on fera avec
    Bonne soirée.
    @+

    Guy FALESSE

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut LedZeppII,

    Les fonctions vont bien sauf que, j'ai créé un nouveau formulaire avec un nouveau ruban.
    J'ai voulu reprendre toutes les fonctions en xml et en vba mais ça ne va plus.
    J'ai supprimé les fonctions qui fonctionnaient avec le rubanAAA et donc dans un autre formulaire, là où ça marchait, pour les remplacer avec un ruban AAA2, qui est déclaré et les autres fonctions sélection etc. vont bien.
    Une question idiote, je dois renommer toutes les fonctions écrites avec l'ancien formulaire qui fonctionnaient.
    C'est ce que j'ai fait mais j'ai encore dû rater quelque chose.
    Je teste encore et te tiens au courant.
    @+
    Guy FALESSE

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    Salut LedZeppII,

    Voici tous les codes, ça ne va toujours pas, il me semble n'avoir rien oublié, j'ai bien dit, il me semble, j'ai utilisé la fonction rechercher de VBA donc...?

    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
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    Avec le formulaire frmAchatsGlobaux:
     
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="getMonRuban2"> 
       <ribbon startFromScratch="true">
         <tabs>
             <!--Achats globaux -->
    		<tab id="achatsGlobaux" label="Achats globaux" visible="true">
    			<group id="idAchatsGlobaux" label="Les achats globaux">
    				<box id="id_AchatsGlobaux" boxStyle="vertical">
    				<button id="Achats_globaux" imageMso="FileOpenDatabase" label="Voir les achats globaux" size="normal" onAction="action_Ouvrir_frmAchatsGlobaux"/>
    				<!--<Button id="id_Recherche" imageMso="FindDialog" label="Recherche" size="normal"/>-->
    				<button id="DépensesParDates" imageMso="DataTypeTime" label="Calendrier Dépenses" size="normal" onAction="action_Ouvrir_frmDateDépenses"/>
    				<comboBox  id="cmbMois01" label="Liste Mois:" getItemCount="getMoisCount" getItemLabel="getMoisLabel" getText="onGetTextMois" onChange="onChangeMois"/>
    				</box>
    	            <!-- Filtrer -->
    				<separator id="sepBeforeSort_2" />
    				<toggleButton idMso="SortUp" />
    				<toggleButton idMso="SortDown" />
    				<button idMso="SortRemoveAllSorts" />
    				<!-- Trier -->
    				<separator id="sepBeforeFilter_2" />
    				<menu idMso="SortSelectionMenu" />
    				<toggleButton idMso="FilterToggleFilter" />
    				<button idMso="FindDialog" label="Trouver" />
    			</group>	
    		</tab>		
    		<!-- fin achats globaux -->
    	 </tabs>
       </ribbon>
    </customUI>
    '======================================================================================================================================
    Les codes VBA:
    Déclaration:
    Option Compare Database
    Option Explicit
     
    Public oRst As DAO.Recordset
    Dim db As DAO.Database
     
    'Sélection du Rayon
     
    Public SelectionRayons As String
    Public SelectionMois As String
     
    ' Variable objet pour le ruban
    Dim rubanAAA As IRibbonUI
    Dim rubanAAA1 As IRibbonUI
    Dim rubanAAA2 As IRibbonUI
     
    ' Variable conservant le nom de la case à cocher qui est cochée
    Dim sChkNoteCtlId As String
     
     
    Public bBlanchir_cmbMois01 As Boolean
    Public bBlanchir_cmbRayons As Boolean
    '=================================================================================================
    Public Sub Action_ouvrir_frmAchatsGlobaux(ByVal control As IRibbonControl)
        DoCmd.OpenForm "frmAchatsGlobaux"
    End Sub
    '==================================================================================================
    Public Sub getMoisCount(control As IRibbonControl, ByRef count)
        Set oRst = CurrentDb.OpenRecordset("SELECT * FROM tblMois;")
        'Récupère le nombre d'enregistrements
        With oRst
            .MoveLast
            count = .RecordCount
            .MoveFirst
        End With
    End Sub
    '==================================================================================================
    Public Sub getMoisLabel(control As IRibbonControl, index As Integer, ByRef label)
        On Error GoTo err
        With oRst
            label = .Fields("ID_Mois")
            .MoveNext
        End With
    Exit Sub
    err:
    MsgBox err.Description
    End Sub
    '====================================================================================================
    Public Sub onChangeMois(control As IRibbonControl, ListeMois As String)
        Dim monSQL As String, NumMois As Integer, maBD As Database, rst1 As Recordset, rst2 As Recordset, rst3 As Recordset, rst4 As Recordset, rst5 As Recordset
        Dim rst6 As Recordset, rst7 As Recordset, rst8 As Recordset, rst9 As Recordset, rst10 As Recordset, rst11 As Recordset, rst12 As Recordset, text As String
        Set maBD = CurrentDb
        On Error GoTo Err_onChangeListeMois
     '
        Select Case control.Id
            Case "cmbMois01"
            SelectionMois = ListeMois
            If ListeMois = "Janvier" Then
                NumMois = 1
                Set rst1 = maBD.OpenRecordset("qryAchatsGlobauxJanvier", dbOpenDynaset)
                If rst1.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de janvier!", vbCritical, "Achats globaux janvier"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""1"""
                DoCmd.OpenForm "frmAchatsGlobaux"
                Forms!frmAchatsGlobaux.RecordSource = monSQL
                bBlanchir_cmbMois01 = True
                rubanAAA2.InvalidateControl "cmbMois01"
            End If
            '-----------------------------------------------------
            If ListeMois = "Février" Then
                NumMois = 2
                Set rst2 = maBD.OpenRecordset("qryAchatsGlobauxFévrier", dbOpenDynaset)
                If rst2.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de février!", vbCritical, "Achats globaux février"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""2"""
                DoCmd.OpenForm "frmAchatsGlobaux"
                Forms!frmAchatsGlobaux.RecordSource = monSQL
                bBlanchir_cmbMois01 = True
                rubanAAA2.InvalidateControl "cmbMois01"
              End If
              '-----------------------------------------------------------------------
            If ListeMois = "Mars" Then
                NumMois = 3
                Set rst3 = maBD.OpenRecordset("qryAchatsGlobauxMars", dbOpenDynaset)
                If rst3.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de mars!", vbCritical, "Achats globaux mars"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""3"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
            End If
            '---------------------------------------------------------------------------
            If ListeMois = "avril" Then
                NumMois = 4
                Set rst4 = maBD.OpenRecordset("qryAchatsGlobauxAvril", dbOpenDynaset)
                If rst4.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois d'avril!", vbCritical, "Achats globaux avril"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""4"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '------------------------------------------------------------------------
           End If
           If ListeMois = "mai" Then
                NumMois = 5
                Set rst5 = maBD.OpenRecordset("qryAchatsGlobauxMai", dbOpenDynaset)
                If rst5.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de mai!", vbCritical, "Achats globaux mai"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""5"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '------------------------------------------------------------------------
           End If
           If ListeMois = "juin" Then
                NumMois = 6
                Set rst6 = maBD.OpenRecordset("qryAchatsGlobauxJuin", dbOpenDynaset)
                If rst6.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de juin!", vbCritical, "Achats globaux juin"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""6"""
                DoCmd.OpenForm "frmAchatsGlobaux"
                Forms!frmAchatsGlobaux.RecordSource = monSQL
                bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
            '-----------------------------------------------------------------------------
           End If
           If ListeMois = "juillet" Then
                NumMois = 7
                Set rst7 = maBD.OpenRecordset("qryAchatsGlobauxJuillet", dbOpenDynaset)
                If rst7.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de juillet!", vbCritical, "Achats globaux juillet"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""7"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '-------------------------------------------------------------------------------
           End If
           If ListeMois = "août" Then
                NumMois = 8
                Set rst8 = maBD.OpenRecordset("qryAchatsGlobauxAoût", dbOpenDynaset)
                If rst8.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de août!", vbCritical, "Achats globaux août"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""8"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '-----------------------------------------------------------------------------
           End If
           If ListeMois = "septembre" Then
                NumMois = 9
                Set rst9 = maBD.OpenRecordset("qryAchatsGlobauxSeptembre", dbOpenDynaset)
                If rst9.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de septembre!", vbCritical, "Achats globaux septembre"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""9"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '---------------------------------------------------------------------------
           End If
           If ListeMois = "octobre" Then
                NumMois = 10
                Set rst10 = maBD.OpenRecordset("qryAchatsGlobauxOctobre", dbOpenDynaset)
                If rst10.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois d' octobre!", vbCritical, "Achats globaux octobre"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""10"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '-------------------------------------------------------------------------
           End If
           If ListeMois = "novembre" Then
                NumMois = 11
                Set rst11 = maBD.OpenRecordset("qryAchatsGlobauxNovembre", dbOpenDynaset)
                If rst11.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de novembre!", vbCritical, "Achats globaux novembre"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""11"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '------------------------------------------------------------------------
           End If
           If ListeMois = "décembre" Then
                NumMois = 12
                Set rst12 = maBD.OpenRecordset("qryAchatsGlobauxDécembre", dbOpenDynaset)
                If rst12.RecordCount = 0 Then
                    Beep
                    MsgBox "Pas encore d'achats " & vbLf & _
                            "dans ce mois de décembre!", vbCritical, "Achats globaux décembre"
                    Exit Sub
                End If
                monSQL = "SELECT * FROM tblAchatsGlobaux WHERE DatePart(""m"",DateAchats)=""12"""
                DoCmd.OpenForm "frmAchatsGlobaux"
               Forms!frmAchatsGlobaux.RecordSource = monSQL
               bBlanchir_cmbMois01 = True
               rubanAAA2.InvalidateControl "cmbMois01"
               '-----------------------------------------------------------------------
           End If
        End Select
     
      '  If Not (gobjRibbon Is Nothing) Then
      '      gobjRibbon.InvalidateControl "cmbVille"
      '  End If
     
    Exit_onChangeListeMois:
        Exit Sub
     
    Err_onChangeListeMois:
        'MsgBox Err.Description
        Resume Exit_onChangeListeMois
    Set rst1 = Nothing
    Set rst2 = Nothing
    Set rst3 = Nothing
    Set rst4 = Nothing
    Set rst5 = Nothing
    Set rst6 = Nothing
    Set rst7 = Nothing
    Set rst8 = Nothing
    Set rst9 = Nothing
    Set rst10 = Nothing
    Set rst11 = Nothing
    Set rst12 = Nothing
    Set maBD = Nothing
    End Sub
    '======================================================================================================
    Sub onGetTextMois(control As IRibbonControl, ByRef text)
    Select Case control.Id
        Case "cmbMois01"
            If bBlanchir_cmbMois01 Then
               text = ""
               bBlanchir_cmbMois01 = False
            End If
    End Select
    End Sub
    '=======================================================================================================
    Tu as le temps et merci d'avance.
    @+

    Guy FALESSE

  19. #19
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,
    Citation Envoyé par Guy FALESSE Voir le message
    J'ai voulu reprendre toutes les fonctions en xml et en vba mais ça ne va plus.
    J'ai supprimé les fonctions qui fonctionnaient avec le rubanAAA et donc dans un autre formulaire, là où ça marchait, pour les remplacer avec un ruban AAA2, qui est déclaré et les autres fonctions sélection etc. vont bien.
    Une question idiote, je dois renommer toutes les fonctions écrites avec l'ancien formulaire qui fonctionnaient.
    Non, on n'est pas obligé d'avoir plusieurs fonctions de rappel pour un même événement.
    On peut avoir une seule fonction pour tous les rubans personnalisés.
    On applique un code différent selon l'Id du contrôle qui appelle.
    C'est pour ça qu'on commence le code par Select Case control.ID.
    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
    Public Sub onChangeMois(control As IRibbonControl, ListeMois As String)
     
        Select Case control.ID
            ' Pour le contrôle cmbMois du ruban rubAAA1
            Case "cmbMois"
                SelectionMois = ListeMois
                If ListeMois = "Janvier" Then
                ' etc...
     
     
            ' Pour le contrôle cmbMois01 du ruban rubAAA2
            Case "cmbMois01"
                SelectionMois = ListeMois
                If ListeMois = "Janvier" Then
                ' etc...
     
        End Select 
    End Sub

    Ceci étant dit, c'est peut-être plus clair et plus lisible d'avoir une fonction de rappel par ruban personnalisé.
    Les fonctions de rappels devront avoir des noms différents.
    Si on est dans un même module de code, c'est obligatoire car on ne peut pas avoir deux sub de même nom.
    Si les sub sont dans des modules séparés et ont le même nom, on peut compiler mais on ne sait appeler une sub en particuler en utilisant seulement son nom.
    On peut par exemple utiliser une convention en disant que le nom de la sub commence par le nom du ruban auquel elle est destinée :
    rubanAAA1_onChangeMois pour le ruban rubanAAA1
    et
    rubanAAA2_onChangeMois pour le ruban rubanAAA2.


    J'ai testé ton code.
    Il manque la fonction de rappel getMonRuban2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub getMonRuban2(ribbon As IRibbonUI)
    Set rubanAAA2 = ribbon
    End Sub
    Je pense que c'est ça ton problème.

    A+

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 101
    Points
    101
    Par défaut remettre à blanc un combo box sur un ruban
    salut LedZeppII,

    Merci pour la réponse...exacte.
    J'ai aussi, une fois n'est pas coutume, compris comment faire avec les rubans
    RubanAAA1_onChangeMois etc.
    Il y a encore tout de même un truc qui m'embête un peu.
    Lorsque j'ai fini de tester les mois et que je veux tester l'année entière, je ne sais pas.
    Le fait de cliquer sur le bouton 'voirlesachatsglobaux' devient inopérant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub Action_ouvrir_frmAchatsGlobaux(ByVal control As IRibbonControl)
        DoCmd.OpenForm "frmAchatsGlobaux"
    End Sub
    Il faut dans ce cas, fermer le formulaire et cliquer de nouveau sur le bouton 'ouvrir frmAchatsGlobaux.
    Alors, je me demandais si je ne pouvais pas faire autrement, comme par exemple dans OnChangeMois, mettre une clause supplémentaire qui pourrait me permettre de visualiser l'année.
    Je ne vois pas comment faire et bien sûr, est-ce du domaine du possible.
    En tout cas, encore merci et bonne soirée.

    Guy FALESSE

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E] Vider une combobox sur une feuille
    Par yogyx dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/03/2007, 17h19
  2. [VBA Excel] Comment gerer les combobox sur un Userform
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2007, 21h30
  3. [VBA-E]Déclenchement combobox sur la frappe des caractères
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/10/2006, 01h55
  4. [VB.NET][2.0]Positionner mon combobox sur un item déterminé
    Par Golzinne dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/03/2006, 14h30
  5. [VBA]Execution d'une procédure avec un ComboBox sur Excel
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/01/2006, 09h27

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