Préselection des élements d'une ListBox

Résolu
rampa99 Messages postés 8 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 août 2005 - 15 août 2005 à 22:10
rampa99 Messages postés 8 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 août 2005 - 16 août 2005 à 21:05
Bonjour à tous,

Je débute en Access et suis confronté au problème suivant:

Je suis dans un formulaire permettant de mettre à jour les enregistrements de la table Livres.

Les livres sont en relation avec les textes via la tables livres_textes.

Je n'ai pas de probleme à lister les textes associés à un livre.

Je souhaite créer un formulaire listant l'ensemble des textes existants
avec une préselection des textes déjà associés au livre du formulaire
mais je ne parviens pas à créer acceder aux elements de ma liste box

Ci joint le code associé à mon bouton:



Dim requete As String

Dim para As String

'récupération & conversion de l'identifiant du texte

para = Conversion.CStr(Forms!f_textes!textes_id.Value)

'requete de selection des contenants

requete = "SELECT contenants_id from contenants_textes where textes_id=" + para

Dim db As Database

Set db = CurrentDb

Dim R As DAO.Recordset

Set R = db.OpenRecordset(requete)

For i = 1 To Forms!f_textes_sf_contenants_MAJ!l_contenants.length

MsgBox Forms!f_textes_sf_contenants_MAJ!l_contenants(i).Value

Next

'test pour voir si je parviens à acceder aux objets de la liste box



'pour chaque objet i de l_contenants

'si contenants_id dans tab resultat alors Me!l_contenants.Selected(i) = True

' et ca c'est que je souhaite faire



Le message d'erreur que j'obtiens est :



Propriété ou méthode non gérée par cet objet (j'utilise DAO 3.6)

4 réponses

rampa99 Messages postés 8 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 août 2005
16 août 2005 à 21:05
Voila un peu de recherche et de tatonnements et j'ai trouvé

Dim requete As String

Dim para As String

'récupération & conversion de l'identifiant du texte

para = Conversion.CStr(Forms!f_textes!textes_id.Value)

'requete de selection des contenants

requete = "SELECT contenants_id from contenants_textes where textes_id=" & para

Dim db As Database

Set db = CurrentDb

Dim R As DAO.Recordset

Set R = db.OpenRecordset(requete)



For i = 0 To Forms!f_textes_sf_contenants_MAJ!l_contenants.ListCount - 1

'On parcourt chaque élément de la listbox. L'indexation commence à 0

R.FindFirst "[contenants_id]
= " & Forms!f_textes_sf_contenants_MAJ!l_contenants.ItemData(i)

'on recherche si un des elements
de la requete correspond à l'objet de la liste actuellement étudié

If R.NoMatch Then

'pas de correspondance: on ne fait rien


'MsgBox "Contenant " &
Forms!f_textes_sf_contenants_MAJ!l_contenants.ItemData(i) & " pas
dans la liste"

Else

'L'élément est dans la liste, on le passe donc à sélectionné


'MsgBox "Contenant " &
Forms!f_textes_sf_contenants_MAJ!l_contenants.ItemData(i) & " dans
la liste"


Forms!f_textes_sf_contenants_MAJ!l_contenants.Selected(i) = True

End If

Next

'On passe à l'objet suivant de la liste

R.Close



pour les ! ceci semble etre le standard pour VBA access (mais comme je l'ai dit plus haut je débute)
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 août 2005 à 23:38
salut
si çà peut t'aider, tes ! partout, çà me laisse perplexe...
2e point, requete, je l'aurais écrit de cette manière :
requete "SELECT contenants_id FROM contenants_textes WHERE textes_id '" & para & "'"

désolé de pas pouvoir faire plus. (VB6)
PCPT
0
rampa99 Messages postés 8 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 16 août 2005
16 août 2005 à 00:04
Petite précision: je suis en VBA pour Acces version 2002.

Les ! ne posent pas de pb pas plus que la requete (teste autrement).
Mon probleme c'est d'acceder aux Item de ma listBox et positionner la
valeur Selected à true.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 août 2005 à 00:17
j'ai précisé VB6 pour que tu vois pourquoi "perplexe" était le mot

je suppose que la commande Debug.Print existe sous VBA.

si c'est le cas, dans ta boucle, peux-tu remplacer MsgBox par Debug.Print et copier le résultat qui apparaitra dans la fenêtre d'execution, ici?
ainsi que le nom de ta ListBox stp

ce qui m'étonne surtout dans ta boucle, c'est qu'il n'y ait pas de MoveNext.....

PCPT
0
Rejoignez-nous