[Access 2010] Combobox et requete sql (vba) [Résolu/Fermé]

Signaler
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
-
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
-
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.



20 réponses

Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Re,

Autant pour moi, je n'avais teste qu'une textebox. Avec pus de textebox ca ne marche plus.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
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??
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
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.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
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.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
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 ?
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
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
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
Merci, je test des que je peux et je vous tiens au courant.
Encore merci.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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.
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Bonjour,

Votre requete sql dans une requete donne un resultat?????
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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.
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Re,

Ce sont les parametres que j'utilise

parametre combobox:

Nbr Colonne = 1
Colonne lie = 1

A suivre
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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...).
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Re,
Non, si je mets vos parametres, cela ne marche pas.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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 ^^)
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Re,
Je cherche une solution.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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.
Messages postés
315
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
12 avril 2013
12
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.
Messages postés
15518
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 janvier 2021
1 431
Re,
merci de l'astuce.

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

A bientot