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

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

4 réponses

Meilleure réponse
Messages postés
8
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 août 2005
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)

Dire « Merci » 3

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

Codes Sources 110 internautes nous ont dit merci ce mois-ci

Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
31
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
Messages postés
8
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
16 août 2005
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.
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
31
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.