Bonjour,

J'explique un peu mon programme.
J'ai une bdd Access (mdb) et je voudrais que via mon interface l'utilisateur puisse ajouter un enregistrement dans une table.

Comme je ne connais pas en avance les tables, je créé dynamiquement les combobox et les labels comme suit

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
 
Dim x As Integer = Form1.tablegridview.Columns.Count - 1
        Dim tableau(1, x) As String
        For i = 0 To x
            tableau(0, i) = i + 1
            tableau(1, i) = Form1.tablegridview.Columns(i).Name.ToString
        Next
 
        Dim Top As Integer = 100
        Dim Left As Integer = 100
        Dim Width As Integer = 2500
        Dim Height As Integer = 275
        Dim NumeroCBox As Integer = 1
        Dim Cbox As ComboBox
        Dim label_dyn As Label
 
        For i = 1 To x + 1
            Cbox = New ComboBox
            label_dyn = New Label
 
            With label_dyn
                .Name = "label" & i
                .Visible = True
                .Top = Top - 15         'Definit la distance entre le bord haut de la fenetre et le bord du conteneur 
                .Left = Left            'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur
                .AutoSize = True
                .Text = tableau(1, i - 1)
            End With
            With Cbox
                .Name = "Cbox_" & tableau(1, i - 1)
                .Visible = True
                .Top = Top          'Definit la distance entre le bord haut de la fenetre et le bord du conteneur 
                .Left = Left        'Definit la distance entre le bord gauche de la fenetre et le bord du conteneur 
                .Width = Width      'Definit la largeur de l'objet 
                .Height = Height    'Definit la hauteur de l'objet 
                .Size = New Size(200, 200)
            End With
 
            Me.Controls.Add(Cbox)
            Me.Controls.Add(label_dyn)
            Top = Top + 50
            NumeroCBox = NumeroCBox + 1
 
            If (i > 0) And (i Mod 8 = 0) Then
                Top = 100
                Left = Left + 250
            End If
        Next
Jusque la tout fonctionne comme souhaité. Mais je voudrais pouvoir remplir les combobox nouvellement créées et la je ne vois pas comment m'y prendre.

Quand je connaissais le nombre de combobox et leur noms je faisais comme ça

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
 
Dim objcmd As OleDbCommand
        Dim objDataAdapter As OleDbDataAdapter
        Dim objCB As OleDbCommandBuilder
        Dim objDataSet As New DataSet
        Dim objDataTable As New DataTable
            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            chaine = "SELECT DISTINCT Author FROM [" & Cbox_nametbl.Text & "]"      
            objcmd = New OleDbCommand(chaine)
            objDataAdapter = New OleDbDataAdapter(objcmd)
            objcmd.Connection = con
            objCB = New OleDbCommandBuilder(objDataAdapter)
            objDataAdapter.Fill(objDataSet, "[" & Cbox_nametbl.Text & "]")
            objDataTable = objDataSet.Tables("[" & Cbox_nametbl.Text & "]")
            Creation_composant.Cbox_autor.DisplayMember = "Author"
            Creation_composant.Cbox_autor.ValueMember = "Author"
            Creation_composant.Cbox_autor.DataSource = objDataSet.Tables("[" & Cbox_nametbl.Text & "]")
            con.Close()
Mais ici donc je connaissais le nom de ma combobox et elle existait déjà
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
 Creation_composant.Cbox_autor.DisplayMember = "Author"
            Creation_composant.Cbox_autor.ValueMember = "Author"
            Creation_composant.Cbox_autor.DataSource = objDataSet.Tables("[" & Cbox_nametbl.Text & "]")
Mais aujourd'hui je ne peux plus faire comme ça et je suis perdu dans le brouillard. Je ne vois pas comment faire. Des idées ?