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

VBA Access Discussion :

Comment récupérer la valeur label d'un dropdown de mon ruban ? [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut Comment récupérer la valeur label d'un dropdown de mon ruban ?
    Bonsoir tous.

    Avec l'aide de Dvlpz, j'ai ajouté un dropdown dans mon ruban et fais le nécessaire pour y afficher les valeurs (label) souhaitées. Ouf !!!
    J'ai donc ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Ribbon_GetItemCount(control As IRibbonControl, ByRef count)
        Set MyDb = CurrentDb
        Set MyoRst = CurrentDb.OpenRecordset("SELECT count(Cheques) FROM Cheque where isnull(Montant) and Annuler=false")
        Set MyCheque = CurrentDb.OpenRecordset("SELECT Cheques FROM Cheque where isnull(Montant) and Annuler=false order by Cheques")
        'Récupère le nombre d'enregistrements   
        Select Case control.id
            Case "dropDown1"
                 count = MyoRst.Fields(0).Value
        End Select   
    End Sub
    Puis ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ribbon_GetItemLabel(control As IRibbonControl, index As Integer, ByRef label)
        Select Case control.id
            Case "dropDown1"
                With MyCheque
                    label = .Fields(0)
                    .MoveNext
                End With        
        End Select  
    End Sub
    Et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Ribbon_GetItemID(control As IRibbonControl, index As Integer, ByRef id)
        Select Case control.id
            Case "dropDown1"
                id = index
            End Select
    End Sub
    Et pour finir : ma misère ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Ribbon_OnAction_List(control As IRibbonControl, itemID As String, itemIndex As Integer)
        Select Case control.id
            Case "dropDown1"
                DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" ?????? Qu'est ce que je mets ici ??????)
        End Select
    End Sub
    Je souhaite avec cette Sub OnAction mettre à jour la case à cocher [Annuler] et forcément selon le numéro de chèque choisi dans ma liste.
    Et là je vous avoue : je sèche carrément. J'ai essayé plein de choses dans tous les sens et n’importe comment, en vain.
    Que dois-je mettre comme variable dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" ?????? Qu'est ce que je mets ici ??????)
    Et d'ailleurs mon GetItemID est-il vraiment utile ?
    J'ai lu dans une discussion sur ce forum qu'il fallait inclure aussi un GetSelectedItemID. C'est vrai ? Si oui comment lier l'index au label ?
    Voulez-vous m'orienter SVP ?
    Merci d'avance.

  2. #2
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    Hello,

    je te conseillerai de poser des point d'arrêt dans ton code et de poser des espions sur les objets qui intéressent.
    C'est personnellement la meilleur manière que j'ai trouvé pour comprendre quelles propriétés je pouvais ensuite utiliser dans mon code

    si tu ne connais pas le débug , un peu de lecture http://cafeine.developpez.com/access...el/debugprint/
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut
    Bonsoir pyloupylou,

    Merci pour ta réponse.
    Seulement, même si je connais le tuto que tu m'as donné, je ne suis pas plus avancé.
    En effet, il n'y a pas de "bogue" dans mes codes, c'est pire, l'amateur que je suis souffre d'une incapacité manifeste à finir mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Ribbon_OnAction_List(control As IRibbonControl, itemID As String, itemIndex As Integer)
        Select Case control.id
            Case "dropDown1"
                DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" ?????? Qu'est ce que je mets ici ??????)
        End Select
    End Sub
    Dans mon appli, tout fonctionne parfaitement en ce qui concerne le remplissage de mon dropDown.
    Là où ça se gâte, c'est dans ma sub OnAction ci-dessus : je ne sais pas quelle variable indiquer ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" ?????? Qu'est ce que je mets ici ??????)
    Pour ce que j'ai lu par ailleurs, à la différence d'une zone de liste traditionnelle, pour récupérer la valeur choisie dans le dropDown, il faut d'abord passer par son identifiant.
    Et je ne vois pas comment faire ça.
    Merci pour votre aide.

  4. #4
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    je ne suis malheureusement pas un spécialiste de cet objet, mais voilà comment je ferais
    manifestement la valeur qui t'interesse est contenue dans ton objet
    je mettrai donc le
    DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" ?????? Qu'est ce que je mets ici ??????)
    en commentaire
    ensuite sur la ligne je poserai simplement un espion sur control
    tu fais un F9 sur la ligne et tu lances ton prog, tu sélectionnes ta valeur et tu regardes dans la fenêtre espion
    tu déroules le + et tu vas voir toutes les propriétés de ton objet , regarde quelle propriété contient ta valeur (peut être value )
    ensuite corrige ton code en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques='" & control.proprietetrouvee & "'")
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut Yes !
    Bonsoir pyloupylou,

    Bon, j'ai cherché longuement puis abandonné.
    J'ai abandonné le dropDown et mis à la place un comboBox, je ne vois pas bien la différence entre les deux sauf que le combo est beaucoup plus simple à paramétrer.
    Le GetItemCount et le GetItemLabel sont inchangés.
    Par contre, j'ai ajouté un GetText dans le but de remettre à Null la zone d'affichage du combo aprés la MAJ.
    Je me suis franchement inspiré de ceci : http://www.developpez.net/forums/d13...ombobox-ruban/ (merci aux auteurs).
    Et pour finir, il n'y a plus de sub On_Action mais une sub On_Change que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Ribbon_OnChange(control As IRibbonControl, text As String)
        Select Case control.id
            Case "comboBox1"
                DoCmd.RunSQL ("Update Cheque set Annuler=true where Cheques=" & text)
                VarResMyComboAnnul = True
                oMonRuban.InvalidateControl "comboBox1"
        End Select
    End Sub
    la variable text retournant le numéro de chèque sélectionné dans la liste.

    Voilà, content d'avoir réussi tout de même.
    Merci pyloupylou d'avoir considéré ma requête et merci toujours et encore à Dvlpz de nous donner accès à des informations, trucs et astuces pour nous aider.

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

Discussions similaires

  1. Comment récupérer la valeur d'un Label dans un tableau ?
    Par MissHey dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/04/2015, 10h17
  2. Comment récupérer la valeur d'un dropdown
    Par DEV-10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/11/2006, 07h08
  3. comment récupérer le valeur mise dans le label puis afficher
    Par aliosys dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/12/2005, 20h00
  4. Comment récupérer la valeur d'un dbGrid dans des fenêtres MDI ?
    Par sylvie cl dans le forum Composants VCL
    Réponses: 5
    Dernier message: 19/07/2005, 13h42
  5. Réponses: 3
    Dernier message: 22/01/2005, 22h06

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