Recupérer les infos des éléments d'une liste déroulante multichx

Fermé
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013 - 2 mai 2013 à 16:04
 danytall - 14 mai 2013 à 23:24
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
A voir également:

38 réponses

blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
2 mai 2013 à 16:06
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...
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
2 mai 2013 à 16:18
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
Modifié par blux le 2/05/2013 à 16:39
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
 "Les cons, ça ose tout.   
C'est même à ça qu'on les reconnait"
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
2 mai 2013 à 17:00
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
2 mai 2013 à 17:12
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
2 mai 2013 à 17:30
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
Modifié par blux le 2/05/2013 à 17:55
Est-ce que la structure a l'air correcte ?
De toutes façons, pour moi, ça ne peut pas marcher. Tu as deux IF et un seul END IF.
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
2 mai 2013 à 18:57
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.
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
2 mai 2013 à 20:48
Ton code, tel que tu l'as copié ici, devrait déjà sortir une erreur à l'exécution par manque du deuxième END IF.
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 09:51
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".
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 09:53
Tu peux reposter ton code VBA en format code (à l'aide des balises de la boite de dialogue) ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 10:07
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 10:26
Ca va beaucoup mieux à lire ainsi.
Donc pas de END IF supplémentaire à prévoir.

Il faut juste savoir ce qu'affiche strfiltre afin de voir si c'est correct au niveau syntaxe....
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 10:30
"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.
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 10:54
Voir ce que fait msgbox strfiltre afin de voir si la syntaxe de strfiltre est bonne et sera interprétée correctement par access. S'il y a une erreur de syntaxe, le filtre ne sera pas exécuté...
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 11:00
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"
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 11:14
J voudrais savoir exactement ce qui est affiché par msgbox...
Quant à l'erreur, je ne vois pas, à part vérifier si le formulaire porte le bon nom...
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 11:17
le msgbox affiche ceci "[code frs]=133" et 133 correspond a l'identifiant du fournisseur dans la base
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 11:30
Dans ton code, tu as mis des quotes autour de ton code frs, sont-elles affichées par le msgbox ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 12:09
oui
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 13:03
Une question : le form que tu veux ouvrir n'est pas celui dans lequel tu te trouves déjà ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 13:53
Non! en fait dans le premier form il s'agit de la table "fournisseurs" et dans le deuxième il s'agit du formulaire
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 15:36
Quel deuxième ?
Je ne vois qu'un openform...
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 15:41
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 15:55
Tu as bien un formulaire nommé 'FOURNISSEURS' ?
Tu peux l'ouvrir manuellement ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:02
oui c'est exactement cela
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 16:07
et si tu laisses ton code d'ouverture sans mettre de filtre, ça fait quoi ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:11
ça me donne le resultat du msgbox "[code frs]=133"
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 16:16
Ma question était : est-ce que le formulaire s'ouvre sans mettre le filtre ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:17
non
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 16:26
Et si tu essayes d'ouvrir un autre formulaire ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:36
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".
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:40
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
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 16:43
Tu veux faire quoi avec ce code ?
0
danytall Messages postés 33 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 14 mai 2013
3 mai 2013 à 16:45
je veux qu'il m'ouvre un formulaire qui contiendra uniquement les infos des fournisseurs sélectionnés dans la liste déroulante.
0
blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
3 mai 2013 à 16:49
tu as déjà mis un filtre à l'ouverture, pas besoin de remettre autre chose sur le bouton sur lequel tu viens d'appuyer...
0