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 :

Alimenter un MS Form 2 listbox via une Requête [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut Alimenter un MS Form 2 listbox via une Requête
    Bonjour mes ami(es),

    je reviens encore une fois vers vous en espérant de trouver des réponses à mes questions.

    j'ai effectué quelques recherches dans le Forum concernant les cases à cocher dans une zone de liste, et je me suis tombé sur cette discussion qui m'arrange beaucoup, en ajoutant le contrôle ACtive X "Microsoft Form 2 ListBox"

    http://www.developpez.net/forums/d22...ckbox-listbox/

    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
    Private Sub Form_Load()
    Const fmLIST_STYLE_OPTION As Integer = 1
    Const fmMULTI_SELECT_SINGLE As Integer = 0
    Const fmMULTI_SELECT_MULTI As Integer = 1
    Const fmMULTI_SELECT_EXTENDED As Integer = 2
     
    Dim I As Integer
    Dim oCtl As Object
     
      Set oCtl = lstTest.Object
      With oCtl
        .listStyle = fmLIST_STYLE_OPTION
        .MultiSelect = fmMULTI_SELECT_MULTI
        For I = 1 To 10
          .AddItem "Valeur " & Trim(str(I))
        Next
      End With
      Set oCtl = Nothing
    End Sub
    mais mon problème c'est que je ne sais pas comment alimenter la listebox via une requête soit SQl soit Recorset! pourriez vous m'aider ou m'orienter svp?

    merci d'avance pour l'aide que vous pouvez m'apporter.

    cordialement.

  2. #2
    Membre régulier
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Juin 2012
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2012
    Messages : 53
    Points : 73
    Points
    73
    Par défaut
    Avec la référence Microsoft ADO activée, voilà comment ouvrir une requête puis parcourir les enregistrements, récupérer la valeur d'un champ puis fermer la requête :

    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
    Dim Rst As New ADODB.Recordset
    Dim SQL As String
    Dim Variable As String
     
    ' requête SQL
    SQL = "SELECT * FROM [Nom_de_Table] WHERE [Condition1] AND [Condition2]"
     
    ' Ouverture (CurrentProject si ta requête est dans ton fichier access)
    Rst.Open SQL, CurrentProject.Connection
     
    ' Tant qu'on est pas à la fin de la requête (EOF = End of file)
    While Not Rst.EOF
         Variable = Rst![Nom_du_champ_de_la_table]
    Wend
     
    ' Fermeture de la requête
    Rst.Close
    Set Rst = Nothing
    Tu glisses cette procédure à la place de ton "for", tu adaptes la requête SQL et tu rajoutes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oCtl.AddItem "Valeur " & Variable
    dans le "While", à priori ça devrait être bon... Ca devrait alimenter ta liste déroulante.

  3. #3
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut
    Bonjour, et merci pour ta repense,

    il s'agit dans mon cas d'une zone de liste et pas une liste déroulante, je cherche comment alimenter la zone de liste via un recordset afin d'obtenir plusieurs colonne, la méthode RowSource n'est pas supportée avec l'objet Active X Microsoft Form 2 ListBox.

    votre cas marche nickel avec une liste déroulante mais dans le cas de zone de liste non.

    merci.

  4. #4
    Membre habitué Avatar de lakhdar16
    Homme Profil pro
    West POS Senior Representative
    Inscrit en
    Avril 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : West POS Senior Representative
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2011
    Messages : 170
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    pour remplir la listbox MS forms 2 j'ai utiliser la méthode ADODB, pour cela j'ai fais le code suivant:

    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
    Sub RemplirListBox (ByRef cbo As MSForms.ListBox, strSQL As String, ByRef strField As String, ByRef strfield2 As String, ByRef strfield3 As String)
    Dim x As Integer
    Dim rs2 As New ADODB.Recordset
    x = 0
    Set rs2 = New ADODB.Recordset
    rs2.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly
    If rs2.EOF Then
    Else
    Do Until rs2.EOF
    cbo.AddItem
    cbo.List((x), 0) = rs2.Fields(strfield2)
    cbo.List((x), 1) = rs2.Fields(strField)
    cbo.List((x), 2) = rs2.Fields(strfield3)
    x = x + 1
        rs2.MoveNext
    Loop
      rs2.Close
      Set rs2 = Nothing
      End If
    End Sub

    et sur chargement du Formulaire:

    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
    Const fmLIST_STYLE_OPTION As Integer = 1
    Const fmMULTI_SELECT_SINGLE As Integer = 0
    Const fmMULTI_SELECT_MULTI As Integer = 1
    Const fmMULTI_SELECT_EXTENDED As Integer = 2
     
    Dim I As Integer
    Dim oCtl As Object
    Dim rst As New ADODB.Recordset
    Dim S As Long
     
     
      Set oCtl = lstTest.Object
     
        oCtl.listStyle = fmLIST_STYLE_OPTION
        oCtl.MultiSelect = fmMULTI_SELECT_MULTI
        oCtl.ForeColor = vbBlue
        oCtl.BackColor = vbYellow
        oCtl.FontSize = 10
     
      RemplirListBox oCtl, "SELECT * FROM tbl_CurrentUser", "Username1", "Région", "Profil"
     
     
      Set oCtl = Nothing


    avec cette méthode vous aurez une zone de liste avec cases à cocher, et pour récupéré la valeur ID de la ligne séléctionnée:

    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
    Private Sub cmdShowContent_Click()
    Dim oCtl As Object
    Dim strContent As String
    Dim I As Integer
    Dim N As Integer
     
      Set oCtl = lstTest.Object
      For I = 0 To oCtl.ListCount - 1
        If oCtl.Selected(I) = True Then
          strContent = strContent & oCtl.List(I) & vbCrLf
        End If
      Next
      MsgBox strContent
     
    End Sub
    et voilà ça marche nickel pourvu que cela aidera autres gens.

    cordialement.

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

Discussions similaires

  1. Comment remplir une listBox via une collection
    Par loic20h28 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 20/11/2008, 14h49
  2. Alimentation d'un ComboBox via une requête paramètrée par un autre ComboBox
    Par Platinium_Phoenix dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 30/06/2008, 09h56
  3. Sélection d'un item d'un listbox via une valeur
    Par Filipegomes dans le forum C#
    Réponses: 10
    Dernier message: 31/10/2007, 13h50
  4. comment charger une listbox via une requete access
    Par sanfour_walhan dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/12/2006, 07h44
  5. [MySQL] alimenter une liste déroulante via une requête
    Par stefon dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/12/2006, 13h32

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