OVH Cloud OVH Cloud

Combobox excel avec une colonne d'une table runtime access

15 réponses
Avatar
Gortex
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca

Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False, ";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub

Ca fonctionne très bien quant Access est installer mais pas avec le runtime Access
vous avez une solution pour venir au secoure d'un débutant merci

10 réponses

1 2
Avatar
Michel__D
Bonjour,
Le 24/03/2020 à 05:50, Gortex a écrit :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False, ";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le runtime
Access

Normal le runtime ne permet pas de créer l'objet Access.Application.
vous avez une solution pour venir au secoure d'un débutant merci

Il va falloir utiliser un Recordset.
J'ai pas trop le temps actuellement, télétravail oblige.
Avatar
gortex
Le mardi 24 Mars 2020 à 05:50 par Gortex :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As
DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False,
";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci
Bonjour
ok merci j' attend votre retour quant vous pourrez m'accorder du temps
car je souhaite me servir de cette combo box comme critère pour
faire une sorte de rechercheV dans ma table access et récupérer la ligne trouver
dans mes textbox de mon userform excel.
Cordialement
Avatar
MichD
Bonjour,
Un exemple de code non testé :
'-----------------------------------------------
Sub Test()
'Tu dois ajouter la référence suivante au
'projetVBA de ton fichier Excel
'Fenêtre de l'éditeur de code
'Barre des menus / Outils / Références /
'Microsoft ActiveX Data Objects 2.8 Library
Dim Conn As ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Source As String, Requete As String
'Chemin et nom du fichier access
Source = "E:AccessNomFichier.accdb"
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.ACE.OLEDB.8.0;" & _
"Data Source=" & Source & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"
'adapte la requête et le nom de la table "client"
Requete = "SELECT * FROM Client ORDER BY nom_client"
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
If Rst.RecordCount > 0 Then
'Adapte le nom de la feuille de calcul où est le
'combobox
'Le combobox est un contrôle émanant de la barre
'outils "Contrôle Activex" et non-formulaire
With Worksheets("Feuil1").ComboBox1
.ColumnCount = 1
.ColumnWidths = "100"
.List = Application.Transpose(Rst.GetRows)
End With
Else
Msgbox "Aucune donnée trouvée."
End If
End Sub
'-----------------------------------------------
MichD
Avatar
gortex
Le mardi 24 Mars 2020 à 05:50 par Gortex :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As
DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False,
";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci
Ok merci ca fonctionne
et comment je peux récupéré les valeurs de la ligne du critere de la combobox dans mes textbox
Avatar
MichD
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci

Ok merci ca fonctionne
et comment je peux récupéré les valeurs de la ligne du critere de la combobox
dans mes textbox

Bonjour,
Exemple : Pour récupérer la ligne de la valeur choisit par l'usager
Si le combobox est vide, rien ne se passe.
Attention, cet exemple s'applique si le contenu du combobox est du texte
Si ce combobox contient du numérique, il faut utiliser plutôt ceci :
MsgBox Application.Match(clng(.Value), .List, 0) 'Pour les entiers
OU
MsgBox Application.Match(cdBl(.Value), .List, 0) 'nombre avec décimales
'--------------------------------
Private Sub ComboBox1_Click()
With Worksheets("Feuil1").ComboBox1
If .ListIndex > -1 Then
MsgBox Application.Match(.Value, .List, 0)
End If
End With
End Sub
'--------------------------------
MichD
Avatar
MichD
Le 25/03/20 à 15:22, MichD a écrit :
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci

Ok merci ca fonctionne
et comment je peux récupéré les valeurs de la ligne du critere de la
combobox
dans mes textbox

Bonjour,
Exemple : Pour récupérer la ligne de la valeur choisit par l'usager
Si le combobox est vide, rien ne se passe.
Attention, cet exemple s'applique si le contenu du combobox est du texte
Si ce combobox contient du numérique, il faut utiliser plutôt ceci :
MsgBox Application.Match(clng(.Value), .List, 0) 'Pour les entiers
OU
MsgBox Application.Match(cdBl(.Value), .List, 0) 'nombre avec décimales

J'ai mal lu la question. Pour obtenir la valeur de chaque colonne de la
ligne sélectionnée dans le combobox :
Exemple : Pour un combobox contenant 3 colonnes, tu peux ajouter
d'autres colonnes si nécessaire.
'----------------------
Sub test()
Dim A As String, B As String, C As String
With Worksheets("Feuil1").ComboBox1
A = .List(.ListIndex, 0)
B = .List(.ListIndex, 1)
C = .List(.ListIndex, 2)
End With
End Sub
'----------------------
MichD
Avatar
gortex
Le mardi 24 Mars 2020 à 05:50 par Gortex :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As
DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False,
";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci
On ne ses pas compris
je travail sur un userform avec des textbox dans les quel je souhaite récupéré la ligne dans la table access qui corespond au critere recherché dans la combobox
une colonne pour chaque textbox
Avatar
MichD
Dans la procédure suivante, pour boucler sur tous les enregistrements du
recordset et sur tous les champs de chaque recordset
Tu ajoutes ceci après cette ligne de code
If Rst.RecordCount > 0 Then
Tu ajoutes cette variable
Dim F As ADODB.Field
Si ta requête retourne plusieurs enregistrements, tu dois choisir la
méthode .Controls(combobox" & A).AddItem F.Value
'----------------------------------------------
With Me
While Not Rst.EOF
For Each F In Rst.Fields
A = A + 1
.Controls(combobox" & A).value = F.Value
Next
Rst.MoveNext
Wend 'ou Loop
End With
J'ai supposé que toute liste des combobox avait ce préfixe "Combobox"
suivi d'un index de 1 à x.
'----------------------------------------------
'-----------------------------------------------
Sub Test()
'Tu dois ajouter la référence suivante au
'projetVBA de ton fichier Excel
'Fenêtre de l'éditeur de code
'Barre des menus / Outils / Références /
'Microsoft ActiveX Data Objects 2.8 Library
Dim Conn As ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Source As String, Requete As String
'Chemin et nom du fichier access
Source = "E:AccessNomFichier.accdb"
Set Conn = New ADODB.Connection
Conn.Open "Provider=Microsoft.ACE.OLEDB.8.0;" & _
"Data Source=" & Source & ";" & _
"Extended Properties=""Excel 12.0;HDR=Yes"";"
'adapte la requête et le nom de la table "client"
Requete = "SELECT * FROM Client ORDER BY nom_client"
Rst.Open Requete, Conn, adOpenStatic, adLockOptimistic
If Rst.RecordCount > 0 Then
'Adapte le nom de la feuille de calcul où est le
'combobox
'Le combobox est un contrôle émanant de la barre
'outils "Contrôle Activex" et non-formulaire
With Worksheets("Feuil1").ComboBox1
.ColumnCount = 1
.ColumnWidths = "100"
.List = Application.Transpose(Rst.GetRows)
End With
Else
Msgbox "Aucune donnée trouvée."
End If
End Sub
'-----------------------------------------------
Avatar
Michel__D
Bonjour,
Le 25/03/2020 à 08:56, gortex a écrit :
Le mardi 24 Mars 2020 à 05:50 par Gortex :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As
DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False,
";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci

Bonjour
ok merci j' attend votre retour quant vous pourrez m'accorder du temps
car je souhaite me servir de cette combo box comme critère pour
faire une sorte de rechercheV dans ma table access et récupérer la ligne trouver
dans mes textbox de mon userform excel.
Cordialement

Bon je vois que l'on t'a déjà donné des pistes voici un début de code qu'il faut adapter :
Private Sub ComboBox1_Change()
Dim oCnn As Object
Dim oRst As Object
Dim sCnn As String, sDB As String, sTxt As String
Dim nEnr As Long
If Me.ComboBox1.TextLength > 0 Then
sDB = "TEST_.MDB"
sCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & sDB & ";"
Set oCnn = CreateObject("ADODB.Connection")
oCnn.Open sCnn
sTxt = "SELECT * FROM UneTable WHERE UnChamp Like '%" & Me.ComboBox1.Text & "%';"
Set oRst = CreateObject("ADODB.recordset")
oRst.Open sTxt, oCnn, 3, 3
nRet = oRst.RecordCount
If nRet > 0 Then
oRst.MoveFirst
If Me.ComboBox1.Value = oRst.Fields("UnChamp") And nRet = Me.ComboBox1.ListCount Then
Me.TextBox1.Value = oRst.Fields("ChampDeux")
Me.TextBox2.Value = oRst.Fields("ChampTrois")
Else
Me.TextBox1.Value = ""
Me.TextBox2.Value = ""
sTxt = Me.ComboBox1.Value
Me.ComboBox1.Clear
Do Until oRst.EOF
ComboBox1.AddItem oRst.Fields("UnChamp")
oRst.MoveNext
Loop
Me.ComboBox1.Value = sTxt
End If
End If
oRst.Close
oCnn.Close
End If
Set oRst = Nothing
Set oCnn = Nothing
End Sub
Avatar
gortex
Le mardi 24 Mars 2020 à 05:50 par Gortex :
Bonjour,
je souhaite charger une combobox dans userform excel avec une colonne d'une
table runtime Access
sur une machine sur la quel Access n'est pas installer
j' ai trouver ca
Const c_t_parm As String = "Prevision"
Dim ACapp As Access.Application, db As DAO.Database, rcontacts As
DAO.Recordset
Set ACapp = New Access.Application
Set db = ACapp.DBEngine.OpenDatabase _
("C:UsersxxxxxDocumentsExcel_Tabletable.accdb", False, False,
";pwd=xxxx")
Set rcontacts = db.OpenRecordset(c_t_parm, dbOpenDynaset)
Do While Not rcontacts.EOF
ComboBox1.AddItem rcontacts![Societes intervenantes]
rcontacts.MoveNext
Loop
End Sub
Ca fonctionne très bien quant Access est installer mais pas avec le
runtime Access
vous avez une solution pour venir au secoure d'un débutant merci
Bonjour merci
ca ne fonctionne pas la combobox ne se charge pas
et et j'ai une erreur sur cette ligne oCnn.Open sCnn
Cordialement
1 2