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.
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
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
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.
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
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 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.
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...).
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.
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 ^^)
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.
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.