ComboBox avec une colonne d'une table dans access

Bonjour,

Je dois créer un ComboBox avec la liste de différents types d'industrie qui se trouvent dans la colonne "Industry Name" (2ème colonne) de la table "IndustryAverage" qui se trouve dans access.

Je n'ai pas trouvé de solution par moi même. Je suis vraiment très débutante en VBA et Access.

Pouvez-vous m'aider s'il-vous-plait ?

Je vous remercie par avance.

Bonjour,

J'ai oublié de préciser qu'il ne fallait pas de lien avec les feuilles Excel, rien ne doit apparaître sur les feuilles excel.

Bonsoir

Pour moi, qui n'utilise pas access, je pense que :

tu passe par création, formulaire (sauf si c'est déjà fait)

Puis création , zone de liste déroulante , tu dessines ta liste dans le formulaire et là tu es guidée

1) je veux que la liste extrait les valeurs d'une table

2) tu choisis table "IndustryAverage"

3) tu choisis ton champ "Industry Name" que tu passes dans la colonne de droite

4) et c'est presque fini tu te laisses guider du début à la fin

Bon courage

Bonjour,

Merci pour votre réponse.

J'ai réussi à faire la liste déroulante sur Access mais il faut que cette liste déroulante apparaît dans un formulaire (userform) d'Excel.

Savez-vous comment faire ?

Bonjour à tous,

Pour alimenter la ComboBox1 du Userform1 d'excel avec des données Access, j'écrirai un truc du genre :

Sub Alimente_Combo()
Dim BDD As String, Req As String
Dim Cnx As Object, Rst As Object
Dim lig As Long, i As Long
Dim T1 As Variant, T2 As Variant

    BDD = "C:\Chemin\...\Base_Access.accdb"     ' A renseigner utilement
    Req = " SELECT DISTINCT Industry_Name FROM IndustryAverage ORDER  BY Industry_Name"

    Set Cnx = CreateObject("ADODB.Connection")
    Cnx.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & BDD

    Set Rst = CreateObject("ADODB.Recordset")
    Rst.Open Req, Cnx, 3

    lig = Rst.RecordCount
    ReDim T2(lig - 1)
    If Not lig = 0 Then
        Rst.MoveFirst
        T1 = Rst.GetRows
        For i = 0 To lig - 1
            T2(i) = T1(0, i)
        Next i
        Userform1.ComboBox1.List = T2
    End If

    Cnx.Close
    Set Cnx = Nothing
    Set Rst = Nothing
End Sub

Bonjour,

Merci pour votre réponse mais malheureusement cela ne fonctionne pas.

Voici le code que j'ai mis :

Sub ComboBox1_Change()

Dim BDD As String, Req As String

Dim Cnx As Object, Rst As Object

Dim lig As Long, i As Long

Dim T1 As Variant, T2 As Variant

BDD = "Provider=Microsoft.ACE.OLEDB.16.0;" & _

"Data Source=C:\Users\loic\Desktop\M2 BF\projet vba\2017_ProjectAppleDataBase.accdb"

Req = " SELECT DISTINCT Industry_Name FROM IndustryAverage ORDER BY Industry_Name"

Set Cnx = CreateObject("ADODB.Connection")

Cnx.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & BDD

Set Rst = CreateObject("ADODB.Recordset")

Rst.Open Req, Cnx, 3

lig = Rst.RecordCount

ReDim T2(lig - 1)

If Not lig = 0 Then

Rst.MoveFirst

T1 = Rst.GetRows

For i = 0 To lig - 1

T2(i) = T1(0, i)

Next i

UserForm1.ComboBox1.List = T2

End If

Cnx.Close

Set Cnx = Nothing

Set Rst = Nothing

End Sub

A vérifier :

* le nom et chemin du fichier Access

* l'éventuelle protection du fichier Access par mot de passe

* le nom de la table

* le nom du champ. A ce propos c'est souvent une mauvaise idée de nommer les champs avec des mots composés avec espace : il vaut mieux 'Industry_Name' que 'Industry Name' par exemple. Ca facilite la rédaction des requêtes

PS : si le nom du champ ne peut pas être modifié, il faut l'entourer avec des back-quotes (Alt-Gr 7)

[code]Req = " SELECT DISTINCT `Industry Name` FROM IndustryAverage ORDER BY `Industry Name`"

Bonjour

L'erreur ne peut venir que de là :

BDD = "Provider=Microsoft.ACE.OLEDB.16.0;" & _
"Data Source=C:\Users\loic\Desktop\M2 BF\projet vba\2017_ProjectAppleDataBase.accdb"

Car le code de Pierre fonctionne parfaitement chez moi

Bon courage

@ Patty : Merci de souligner ce détail, je n'avais même pas vu qu'eloo avait sauvagement ajouté du code pas propre sorti d'on-ne-sait-où, genre portnawak. Mais pourquoi a t'il fait ça?? C'est trop simple de tester du code éprouvé peut être?

Je suis désolé d'avoir changé une partie du code mais ça ne fonctionnait pas non en écrivant :

BDD = "C:\Users\loic\Desktop\M2 BF\projet vba\2017_ProjectAppleDataBase.accdb""

J''ai vu sur internet que pour faire une connexion entre Excel et Access il fallait rajouter "Provider=Microsoft.ACE.OLEDB.16.0;" & _

Je ne voulais pas abuser de votre gentillesse en vous sollicitant tout le temps sans essayer un peu de résoudre le soucis.

J'ai changé le nom de la colonne Industry_Name pour que ce soit plus simple d'écrire le code VBA.

Je ne sais pas pourquoi cela ne marche pas j'ai vérifié le nom et chemin du fichier Access, le nom de la table, le nom du champ et je ne pense pas qu'il y a un mot de passe sur le fichier Access car j'ouvre le fichier sans inscrire de mot de passe.

Bon, pour t'aider, ci-joint une démo fonctionnelle avec une base test 'Clients.accdb'. Les 2 fichiers du zip sont à placer dans un même dossier.

Quand tu ouvres le classeur1, le combo est vide, un clic sur le bouton1 alimente le combo avec les noms de la base Client.

Pas de blabla, du résultat.

Et si ça marche pas chez toi, je passe mon tour.

44classeur1.zip (27.44 Ko)

Bonjour,

Je viens de réussir

Je vous remercie beaucoup

Rechercher des sujets similaires à "combobox colonne table access"