Recupérer les infos des éléments d'une liste déroulante multichx
danytall
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
danytall -
danytall -
Bonjour,
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
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
A voir également:
- Recupérer les infos des éléments d'une liste déroulante multichx
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Comment recuperer une video sur youtube - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
38 réponses
Salut,
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...
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...
J'arrive à sélectionner plusieurs fournisseurs mais je n'ai aucune infos sur les fournisseurs (id_frs, nom_frs, tel, site_web,...) après validation
Et si tu mets un msgbox strfiltre avant l'openreport, y'a quoi dedans ?
Quelle est la colonne liée de la liste ?
Quel est le type de "code frs" dans la table ?
A+ blux
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"
Désolé il ne s'agit pas d'un "openreport" mais d'un "openform" et en mettant le msgbox strfiltre avant ça ne fonctionne toujours pas.
Excuses-moi mais je comprends pas ta question concernant la colonne liée à la liste.
Le "code frs" est de type texte
Excuses-moi mais je comprends pas ta question concernant la colonne liée à la liste.
Le "code frs" est de type texte
mettant le msgbox strfiltre avant ça ne fonctionne toujours pas.
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.
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 question
ah ok, dans ce cas la colonne liée est "code frs" et je viens de bien placer le "msgbox strfiltre" et ça me m'affiche l'Id_frs (qui est la clé primaire) des fournisseurs sélectionnés
Si tu veux c'est la mon principal problème. Je pense qu'il y a des critères que j'ai pas pris en compte dans mon code mais je n'arrive pas à voir mon erreur.
Bonjour,
t'as bien raison qu'il me manque un END IF mais lorsque je le place j'ai le message d'erreur "END IF sans bloque if".
t'as bien raison qu'il me manque un END IF mais lorsque je le place j'ai le message d'erreur "END IF sans bloque if".
ok voici le code:
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 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
"Il faut juste savoir ce qu'affiche strfiltre afin de voir si c'est correct au niveau syntaxe" je comprends pas très bien ce que tu veux dire par la.
lorsque je sélectionne un fournisseurs au hasard et que je valide ma sélection, il me retourne 'lID du fournisseur mais après j'ai un message d'erreur derrière "le nom du formulaire "FOURNISSEUS" est mal orthographié ou fait référence à un formulaire inexistant"
le msgbox affiche ceci "[code frs]=133" et 133 correspond a l'identifiant du fournisseur dans la base
Non! en fait dans le premier form il s'agit de la table "fournisseurs" et dans le deuxième il s'agit du formulaire
vu que tu parlais du "form" j'ai pas compris que tu voulais parlé de "l'openform". Pour répondre à ta question je dirai non, je ne suis pas dans le formulaire que je veux ouvrir
je pense pas que cela puisse passer dans la mesure où le résultat doit provenir de la table "fournisseurs" à partir du fournisseur qu'on aura sélectionné dans la liste déroulante. Et ce sont les informations sur ce fournisseur qui alimenteront le formulaire à ouvrir. Je viens quand même de faire le test comme tu me l'as demandé j'ai le même message d'erreur ""le nom du formulaire "formulaire 2" est mal orthographié ou fait référence à un formulaire inexistant".
je viens de faire à nouveau le test et j'ai le message d'erreur "la procédure property let n'est pas définie et la procédure property get n'a pas renvoyée d'objet". l'erreur vient de cette partie du code:
'applique le controle à la liste déroulante du formulaire Set btnListe = Form!lstFOURNISSEURS!code_frs