[Access 2010] Combobox et requete sql (vba)

Résolu/Fermé
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 - 30 avril 2012 à 12:00
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 2 mai 2012 à 17:14
Bonjour à tous,

Je me tourne vers vous car j'ai un petit souci. Je suis en train de faire un formulaire dans lequel je vous drais récupérer le resultat d'une requète effectué en vba.
Quand je remplis la propriété "contenu" de la combobox avec un objet requete, tout fonctionne parfaitement. Mais si je veux passer en vba pour obtenir la même chose...ma combobox reste vide.

(la requete sql provient d'un copier/coller de cette meme requete mais en mode "objet".


Dim baseMat As DAO.Database
Dim rsMat As DAO.Recordset
Dim sql As String
Dim X As Integer

'X = Me.cmb_matieres.ListIndex
Set baseMat = CurrentDb
'Set rsMat = baseMat.OpenRecordset("Matieres")
sql = "SELECT Matieres.[Nom matiere] FROM Matieres"
'DoCmd.RunSQL sql
'Set rsMat = baseMat.OpenRecordset(sql)
cmb_matieres.RowSourceType = "Table/Query"
cmb_matieres.RowSource = sql
cmb_matieres.Requery

'Me.cmb_matieres.Column(0, X) = rsMat

Ce que vous voyez avec les commentaires (les apostrophes) sont les différents tests effectués.
Une âme charitable aurait-elle une idée.
Merci d'avance.



A voir également:

20 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 2/05/2012 à 16:08
Re,

Autant pour moi, je n'avais teste qu'une textebox. Avec pus de textebox ca ne marche plus.
1
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 avril 2012 à 18:16
Bonjour,

Dim sql As String

sql = "SELECT Matieres.[Nom matiere] FROM Matieres"
cmb_matieres.RowSource = sql
cmb_matieres.Requery

Cela suffit, meme sans le Requery cela marche. Par quel evenement initialisez vous votre combobox??
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
30 avril 2012 à 18:29
Merci pour votre réponse. L'évènement est onclick.
Cependant, la requête définitive sera plus longue (celle-la c'était pour tester). et en fonction de la sélection dans la combobox, plusieurs textbox et/ou étiquettes s'actualiseront.
Par exemple, si dans la combobox, je choisis "Droit" alors une textbox, affichera le responsable du cours, une autre les objectifs, une autre les modalités d'examen...
Le but est que la combobox n'affiche qu'une colonne (à paramétrer dans ses propriétés ; ça je sais faire ^^) et les textbox les autres colonnes, d'où le Me.cmb_matieres.Column(0, X).

Code sans la correction apportée :

Private Sub cmb_matieres_Click()
Dim baseMat As DAO.Database
Dim rsMat As DAO.Recordset
Dim sql As String
Dim X As Integer

'X = Me.cmb_matieres.ListIndex
Set baseMat = CurrentDb
'Set rsMat = baseMat.OpenRecordset("Matieres")
sql = "SELECT Matieres.[Nom matiere] FROM Matieres"
'DoCmd.RunSQL sql
'Set rsMat = baseMat.OpenRecordset(sql)
cmb_matieres.RowSourceType = "Table/Query"
cmb_matieres.RowSource = sql
cmb_matieres.Requery
Me.cmb_matieres.Column(0, X) = rsMat.[Nom matiere]

End Sub


Une idée ?

_______________________________
SCV ready to go sir
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 30/04/2012 à 18:43
Re,

Private Sub cmb_matieres_Click() ne fonctionne que si la liste du combobox est remplie. C'est le click sur un des elements de la liste.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
Modifié par kubito le 30/04/2012 à 18:49
Sur la form "onload" ca fonctionnerait ?
Je viens de tester oui un un form load, c'est bon pour la combobox mais, évidemment, les textbox n'affichent rien.

_______________________________
SCV ready to go sir
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 avril 2012 à 19:02
Re,
Oui et non. sur Form_Activate est le mieux par rapport a la mise a jour du combobox si vous passez d'un formulaire a un autre avec modification des tables.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
30 avril 2012 à 19:12
C'est noté. Un grand merci déjà pour ces précisions.
Une idée peut être pour le reste de la problématique ?
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
30 avril 2012 à 19:50
Re,

Definir le nombre de colonnes de votre Combobox (au moins autant que de textebox a remplir)

Remplacez les lettres x, y, z ........ par le nom de vos textebox.Value
Private Sub Cmb_matieres_Change()
X = Cmb_matieres.Column(0)
y = Cmb_matieres.Column(1)
z = Cmb_matieres.Column(2)
End Sub
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
30 avril 2012 à 20:36
Merci, je test des que je peux et je vous tiens au courant.
Encore merci.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 13:54
Euh...ca marche pas..
Rien ne s'affiche dans la textbox (j'en ai pris qu'une pour tester).
J'ai bien lié 5 colonnes a la combo et préciser de n'en affiche qu'une mais rien n'y fait.
Voici le code, y a peut être une erreur...mais je sais pas ou
Option Compare Database

Private Sub cmb_matieres_Change()
Me.cmb_matieres.Value = Me.cmb_matieres.Column(0)
Me.txt_respo.Value = Me.cmb_matieres.Column(2)

End Sub


Private Sub Form_Activate()

Me.cmb_matieres.Value = "Sélectionnez une matière" 'ca devrait s'afficher mais la non plus, ca ne s'affiche pas
SQL = "SELECT DISTINCT Matieres.[Nom Matiere], Matieres.[Nom respo], Matieres.[Prenom respo], Enseignants.Courriel, Enseignants.Nom "
SQL = SQL & "FROM (Matieres INNER JOIN [Fiches pedagogiques] ON Matieres.CodeMatiere = [Fiches pedagogiques].Codematiere) "
SQL = SQL & "INNER JOIN (Enseignants INNER JOIN [Matiere/Prof] ON Enseignants.NumEns = [Matiere/Prof].Enseignants) "
SQL = SQL & "ON Matieres.CodeMatiere = [Matiere/Prof].CodeMatiere "
SQL = SQL & "WHERE Enseignants.Nom = Matieres.[Nom respo]"
Me.cmb_matieres.RowSource = SQL
End Sub


Private Sub Form_Current()
Me.cmb_matieres.SetFocus
Me.cmb_matieres.SelStart = 0
End Sub


Je vais m'arracher les cheveux.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 mai 2012 à 14:00
Bonjour,

Votre requete sql dans une requete donne un resultat?????
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 14:16
Je viens de tester, oui elle affiche ce que je souhaite.
De plus, quand je demande d'afficher toutes les colonnes dans la combo, tout s'affiche egalement.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 mai 2012 à 15:39
Re,

Ce sont les parametres que j'utilise

parametre combobox:

Nbr Colonne = 1
Colonne lie = 1

A suivre
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 15:43
En ce qui me concerne :
nbre de colonne = 1
colonne liée = 5

Je pense que c'est obligatoire si je veux afficher dans mes textbox les differentes colonnes de la combo (ou plus precisement de la requete sql).
C'est peut être une info importante mais que je demande d'afficher la 1 ere, 2 eme ou 3eme colonne, il m'affiche quand meme la 1ere...).
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 mai 2012 à 15:52
Re,
Non, si je mets vos parametres, cela ne marche pas.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 15:59
Quand je met nber de col. 1 et lié 1 :
Effectivement, "Sélectionnez une matière" s'affiche a nouveau. Quand j'en sélectionne une, elle ne d'affiche pas dans l'en tête de la combobiox, elle est dans la liste mais elle n'apparait pas comme sélectionnée.
J'étais persuadé qu'il fallait mettre le nombre de colonnes liées egal au nombre de colonnes de la requete.
La derniere fois que j'ai travaille sous access c'etait avec la version 2003...et je m'en sortais beaucoup mieux.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 16:19
En attendant vous semblez avoir de meilleurs resultats au niveau de la textbox car, chez moi, elle reste d'un blanc immacule (j'ai bien vérifié la couleur de la police ^^)
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
2 mai 2012 à 16:27
Re,
Je cherche une solution.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 16:38
J'ai recupéré la base que j'avais fait il y a quelques années et , curieusement, il n'y a pas 1 colonne ni 5 mais 12 et c'est avec la propriété "largeur colonnes" qu'il est possible d'en en afficher qu'une :
largeur colonnes : 5cm;0cm;0cm;0cm...
Par contre colonne liée est a 1.
Peut etre que c'est un indice.
0
kubito Messages postés 315 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 12 avril 2013 12
2 mai 2012 à 16:56
Ca y ai, j'ai trouvé.
C'était ca l'astube :
Nombre de colonne = 5
Colonne liée = 1
Règler la largeur des colonnes pour n'en afficher qu'une et le tour est joué.
Test avec 2 textbox, elles affichent les bonnes infos.

Encore merci pour tout et RDV très vite car bien que ma requete me satisfasse, une petite modification pourrait la parfaire mais, la encore, je seche.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 2/05/2012 à 17:44
Re,
merci de l'astuce.

Correction:
C'est la seule facon de masquer une colonne.

A bientot
0