Préselection des élements d'une ListBox [Résolu]

rampa99 8 Messages postés mercredi 23 avril 2003Date d'inscription 16 août 2005 Dernière intervention - 15 août 2005 à 22:10 - Dernière réponse : rampa99 8 Messages postés mercredi 23 avril 2003Date d'inscription 16 août 2005 Dernière intervention
- 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)
Afficher la suite 

4 réponses

Meilleure réponse
rampa99 8 Messages postés mercredi 23 avril 2003Date d'inscription 16 août 2005 Dernière intervention - 16 août 2005 à 21:05
3
Merci
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)

Merci rampa99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 août 2005 à 23:38
0
Merci
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
rampa99 8 Messages postés mercredi 23 avril 2003Date d'inscription 16 août 2005 Dernière intervention - 16 août 2005 à 00:04
0
Merci
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.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 16 août 2005 à 00:17
0
Merci
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.