Remplir les elements de combobox par une base données access

HD - 6 sept. 2016 à 10:24 - Dernière réponse :  HD
- 22 sept. 2016 à 16:33
Bonjour,
J'ai programmé en VBa net un combobox ou j'ai mis moi-meme des élements à choisir, Mais j'aimerai bien mettre une base de données Access qui manipulable pour que je puisse ajouter et supprimer les élements de combobox.
Pour ce je vous demande de me guider comment je peux remplir les élements à choix de combobox.
Merci d'avance.
Afficher la suite 

Votre réponse

7 réponses

cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - Modifié par cs_MPi le 7/09/2016 à 16:56
0
Merci
Bonjour,

Tu programmes en VB.NET ou VBA ?
Si VBA, Est-ce Access seulement ou Excel ?

Personnellement, je ferais une requête sur la table en question avec, éventuellement, un DISTINCT pour ne pas avoir de doublons, s'il y en a.
Par la suite, une boucle sur chaque élément de cette requête en ajoutant les items avec AddItem

MPi²
Commenter la réponse de cs_MPi
0
Merci
Bonjour,
En fait je programme avec VBa net 2010 en utilisant une base de données access 2007.
Access contient trois tableaux ( FAMILLES, SousFAMILLES et MATERIELS).

je doit mettre dans le form 3 combobox, une pour le choix de la famille, l'autre pour la ss famille et 3eme pour le choix de matériels

J'ai arriver à remplir la premiere par ce code:

Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand()
        Mycommand.CommandText = "SELECT FAMILLE FROM FAMILLES"

        MyConnexion.Open()

        Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()

        Do While myReader.Read()

            ComboBox1.Items.Add(myReader(0))

        Loop()

    End Sub


maintenant j'aimerai bien que combobox2 sera remplir par les sous familles en fonction de la famille choisie en combobox1.

Merci pour votre intérêt de m'aider

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
Commenter la réponse de HD
cs_MPi 3877 Messages postés mardi 19 mars 2002Date d'inscription 23 août 2018 Dernière intervention - 7 sept. 2016 à 19:40
0
Merci
Il faut que tu aies un champ commun entre tes 2 tables.
À ce moment, tu peux ajouter un WHERE dans ta requête.
Quelque chose comme:
Select SousFAMILLES.MonChamp From FAMILLES, SousFAMILLES Where SousFAMILLES.MonChampCommun = FAMILLES.MonChampCommun AND FAMILLES.MonChampCommun = ComboBox1.Text

Commenter la réponse de cs_MPi
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 7 sept. 2016 à 21:33
0
Merci
Bonjour

En fait je programme avec VBa net ?

est ce que c'est du vb.net ou du vba ?
Commenter la réponse de cs_ShayW
0
Merci
C'est le VB net Par faute de frappe ma question a été transferé vers le forum VBa

ça marche vous m avez donné une piste de réflexion en créant un champ commun entre les deux tableaux

je vous remercie :)
Commenter la réponse de HD
vince6629 74 Messages postés lundi 20 septembre 2010Date d'inscription 5 janvier 2017 Dernière intervention - 22 sept. 2016 à 11:41
0
Merci
Je suis intéressé pour un partage sur ce dossier .
Commenter la réponse de vince6629
0
Merci
En fait moi j'ai trois combobox 1 , 2 et 3 . le 2 sera rempli en fonction de choix de combobox2 et le combobox3 en fonction de choix de combobox2.

Dans ma base donnée j'ai pas crée 3 tableaux.

tableau1 : contient des éléments que j'aimerai remplir dans Combx1 et voilà comment je l'ai ajouté:

Private Sub Form()

        Dim Mycommand As OleDbCommand = Cn.CreateCommand()
        Mycommand.CommandText = "SELECT FAMILLE FROM TABLEAU1"
        Cn.Open()
        Dim myReader As OleDbDataReader = Mycommand.ExecuteReader()
        Do While myReader.Read()
            ComboBox1.Items.Add(myReader(0))
        Loop
        myReader.Close()

En sub


Pour tableau2 (contient deux champs :famille et sous famille) j'ai mis un champ qui porte le nom de FAMILLE de chaque sousFamille sans mettre de relation avec tableau1 ( sinon vous pouvez créer une relation mais ça sera un autre programme comme cs_MPi a expliqué ci-dessus);j'ai remplir combx2 comme suit:

Private Sub ComboBox1_SelectedIndexChanged()
        Dim ds As New DataSet
        ComboBox2.DisplayMember = ""
        ComboBox3.DisplayMember = ""
        Dim str As String
        str = "select * from TBLEAU2 where FAMILLE='" & ComboBox1.Text & "'"

        Dim cmd1 As New OleDbCommand(str)
        Dim d As New OleDbDataAdapter(cmd1)
        Dim tab As New DataTable
        cmd1.Connection() = Cn
        d.Fill(ds, "TABLEAU2")
        tab = ds.Tables("TABLEAU2")
        ComboBox2.DataSource = ds.Tables("TABLEAU2")
        ComboBox2.DisplayMember = "SsFAMILLE"
    End Sub


pour TABLEAU3 , j'ai mis deux champs SousFamille et classe (la même démarche précédente:; et voilà le programme:

Private Sub ComboBox2_SelectedIndexChanged()

        Dim ds As New DataSet
        Dim str1 As String
        str1 = "select * from TABLEAU3 where SsFAMILLE='" & ComboBox2.Text & "'"
        Dim cmd2 As New OleDbCommand(str1)
        Dim d1 As New OleDbDataAdapter(cmd2)
        Dim tab1 As New DataTable
        cmd2.Connection() = Cn
        d1.Fill(ds, "TABLEAU3")
        tab1 = ds.Tables("TABLEAU3")
        ComboBox3.DataSource = ds.Tables("TABLEAU3")
        ComboBox3.DisplayMember = "CLASSE"

    End Sub



Espérant que ça sera compressible :)

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ICI

Merci d'y penser dans tes prochains messages.
Commenter la réponse de HD

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.