Recupérer les infos des éléments d'une liste déroulante multichx
danytall -
je suis en train de construire une base de données sous Access 2010 afin d'orienter les magasiniers sur les fournisseurs qu'on stocke et ceux chez qui on doit se dépanner dans le cas où le fournisseur pour lequel on garde les références en stock ne peut pas nous fournir la référence commander. J'ai fais une table "famille" (famille de produits) et dans chaque famille de produits on a une ou plusieurs sous-famille. J'ai fait une autre table "fournisseurs" (id_frs, nom_frs, tel, site_web,...) et une table "produit" qui fait l'interaction entre un groupe article et ses-familles.
Le processus de fonctionnement attendu de ma base est le suivant: on part du menu de famille de produits (sélection d'une famille de produits) => on arrive au menu des sous-familles de la famille de produits qu'on a sélectionné au départ=> on sélectionne une sous-famille données puis on arrive sur un formulaire => le formulaire contient une liste déroulante multisélection (liste de tous les fournisseurs avec lesquels on travail) => on sélectionne le ou les fournisseurs de la sous-famille et lorqu'on valide notre sélection j'aimerai avoir les informations (id_frs, nom_frs, tel, site_web,...) concernant le ou les fournisseurs sélectionnés. Ce processus concerne les fournisseurs stockés et il en sera de même pour le dépannage.
Voici le code VBA que j'ai mis en place (et qui marche pas bien):
Private Sub btnListe_Click()
Dim varI As Variant
Dim strFiltre As String
Dim MonCtl As Variant 'défini un controle nommé MonCtl
Dim Element As Variant
strFiltre = ""
If Me.lstFOURNISSEURS.ItemsSelected.Count = 0 Then
MsgBox "Aucun fournisseur n'a été sélectionné"
Else
For Each varI In Me!lstFOURNISSEURS.ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " or "
strFiltre = strFiltre & "[Code frs]='" & _
Me!lstFOURNISSEURS.ItemData(varI) & "'"
Next varI
DoCmd.OpenReport "stock", acNormal, strFiltre
End If
'applique le controle à la liste déroulante du formulaire
Set btnListe = Form!stock!code_frs
'affiche l'ensemble des éléments sélectionés de la liste
For Each Element In lstFOURNISSEURS.ItemsSelected
MsgBox lstFOURNISSEURS.Column(0, Element)
Next
End Sub
J'ai vraiment besoin de votre aide pour voir ma base de données fonctionner correctement.
Merci
Dany
- Recupérer les infos des éléments d'une liste déroulante multichx
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Infos - Guide
- Photoshop elements gratuit - Télécharger - Retouche d'image
- Comment récupérer les messages supprimés sur whatsapp - Guide
38 réponses
- 1
- 2
Une base Access 2010 sert à guider les magasiniers vers les fournisseurs en stock ou dépannés, via une navigation par famille et sous-famille et une liste déroulante multisélection des fournisseurs. Le cœur du processus est de constituer un filtre dynamique strFiltre à partir des éléments sélectionnés et d'ouvrir un état ou un formulaire affichant les données des fournisseurs correspondants. Des solutions incluent la gestion des valeurs nulles (IsNull), l'initialisation des listes à l'ouverture et l'assurance que chaque sélection alimente correctement le filtre via des requêtes SQL utilisant OR. En complément, la discussion distingue entre ouvrir un formulaire et afficher un état des fournisseurs, et recommande de vérifier les valeurs sélectionnées avant d'appliquer le filtre afin d'éviter les erreurs.
Comme on est un peu loin de ton écran, ça serait vachement plus sympa de nous dire ce qui marche pas bien car on n'est pas forcément très doués en devinettes...
Quelle est la colonne liée de la liste ?
Quel est le type de "code frs" dans la table ?
A+ blux
"Les cons, ça ose tout. C'est même à ça qu'on les reconnait"
Excuses-moi mais je comprends pas ta question concernant la colonne liée à la liste.
Le "code frs" est de type texte
Le msgbox n'a pas pour but de faire fonctionner mais pour effet d'afficher le contenu de la variable strfiltre afin que l'on puisse voir si elle est correctement formatée...
La colonne liée d'une liste est la valeur renvoyée par cette liste, indépendamment de tout affichage. Jette un oeil ici.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub btnListe_Click()
Dim varI As Variant
Dim strFiltre As String
Dim MonCtl As Variant 'défini un controle nommé MonCtl
Dim Element As Variant
strFiltre = ""
If Me.lstFOURNISSEURS.ItemsSelected.Count = 0 Then
MsgBox "Aucun fournisseur n'a été sélectionné"
Else
For Each varI In Me!lstFOURNISSEURS.ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " or "
strFiltre = strFiltre & "[Code frs]='" & _
Me!lstFOURNISSEURS.ItemData(varI) & "'"
Next varI
MsgBox strFiltre
DoCmd.OpenForm "FOURNISSEURS", acNormal, strFiltre
End If
'applique le controle à la liste déroulante du formulaire
Set btnListe = Form!lstFOURNISSEURS!code_frs
'affiche l'ensemble des éléments sélectionés de la liste
For Each Element In lstFOURNISSEURS.ItemsSelected
MsgBox lstFOURNISSEURS.Column(0, Element)
Next
End Sub
'applique le controle à la liste déroulante du formulaire Set btnListe = Form!lstFOURNISSEURS!code_frs
- 1
- 2