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 :

Afficher données dans ListBox depuis Recordset [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 58
    Par défaut Afficher données dans ListBox depuis Recordset
    Bonjour

    Ci dessous le code que je viens d'utiliser pour afficher les données d'un Recordset dans une List box

    Quel est la syntaxe à utiliser pour affciher plusieurs colonnes?

    MErci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    '****************************************************************************
    'Create the Recordset
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open SQL, oCnMySQL, adOpenStatic, adLockOptimistic, adCmdText
    '****************************************************************************
    'Add Data to ListBox
    Me.AllList.RowSourceType = "Value List"
    Do While Not rs.EOF
    AllList.AddItem rs.Fields(0)
    rs.MoveNext
    Loop

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    le plus simple est de directement attribuer la requête SQL à ta rowsource.

    autre méthode, disponible dans la http://access.developpez.com/faq/?page=zdl#AddItem
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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 confirmé
    Inscrit en
    Janvier 2009
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 58
    Par défaut
    Merci pour l'info

    Le problème est que je crée le recordset avec une connection vers un BD MySQL.

    Donc je pense pas que je peux directement utiliser la requête SQL pour définir le RowSource de la ListBox.

    Ou est-ce qu'il y a une syntawe particulère?

    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Par défaut
    bonjour,

    une solution est d'utiliser une fonction qui renvoie les infos demandées à la listbox.
    La fonction doit avoir cette signature (Chp As Control, id As Variant, ligne As Variant, Col as Variant, Code As Variant) As Variant

    En fait, Access(ou la combobox) questionne la fonction pour l'ensemble des paramètres et données à insérer. Les questions sont passées via le paramètre code.

    Ex:
    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
     Public function FillMyListBox(lstBox As Control, id As Variant, lgn As Variant, Col As Variant, Code As Variant)
     Static rs As ADODB.Recordset, Ligne as long
     
     Select Case Code
        'Initialise la ListBox renvoyer 0 (False) si non OK 
        Case acLBInitialize
             Set rs=New ADODB.Recordset
             rs.CursorLocation = adUseClient
             rs.Open SQL, oCnMySQL, adOpenStatic, adLockOptimistic, adCmdText
             FillMyListBox=rs.RecordCount 
        Case acLBOpen 'Attends une valeur unique <> 0
             FillMyListBox=Timer
        Case acLBGetRowCount 'Attends le nombre de lignes
              FillMyListBox=rs.RecordCount
        Case acLBGetColumnCount 'Attends le nombre de Colonnes
              FillMyListBox=rs.Fields.Count
        Case acLBGetColumnWidth 'Attends la largeur de la Colonne col passé en paramètre
              Select Case Col
     
              End Select
        Case acLBGetFormat 'Attends le format -1 pour valeur par défaut
                FillMyListBox=-1 
        Case acLBGetValue 'Attends la valeur de la colonne Col de la ligne lgn
              if ligne<lgn Then
                   ligne=lgn
                   if lgn=1 then
                     rs.moveFirst
                   else
                     rs.moveNext
                   endif
              Endif
              FillMyListBox=rs.Fields(col-1).Value
        Case acLBEnd 'Fermeture de la ListBox
           rs.Close
           set rs=Nothing
     End Select
    End function
    ou bien utiliser les contrôles Combobox et ListBox de MSForms qui disposent des méthodes AddItem.

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

Discussions similaires

  1. Charger données dans ListBox
    Par pavinho dans le forum VB.NET
    Réponses: 5
    Dernier message: 23/07/2009, 15h33
  2. Afficher données dans formulaire
    Par codial dans le forum Langage
    Réponses: 9
    Dernier message: 18/09/2008, 21h48
  3. afficher données dans une grille
    Par faycalche dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/08/2008, 15h15
  4. Réponses: 4
    Dernier message: 10/09/2007, 12h05
  5. [Excel vba + ADO(X)] afficher BDD dans listbox
    Par Emcy dans le forum Access
    Réponses: 4
    Dernier message: 13/12/2005, 12h46

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