Choix multiple liste déroulante base Access [Résolu/Fermé]

Messages postés
100
Date d'inscription
mercredi 16 juin 2010
Statut
Membre
Dernière intervention
18 janvier 2016
-
Bonjour, j'avance petit à petit dans mon projet Access. J'ai actuellement une liste déroulante région, une pour les centres et une pour les sites. J'ai trois tables importantes qui sont les tables matériels, région, centre et site. Les listes déroulantes se mettent a jour en fonction de ma supérieure (la liste centre n'affiche que les centres de la région sélectionnée...).

Toutefois je ne peux sélectionner qu'une valeur dans ces listes. Ainsi, pour chaque critères (région, centre , site) j'aimerais pouvoir sélectionner plusieurs valeurs (plusieurs régions par exemple).

Je me demande donc quel contrôle de formulaire est idéal pour faire ce là et surtout comment le mettre en place.

Merci d'avance.



Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2664
1
Merci
Salut,

dans ce cas, il faut une zone de liste avec l'option 'sélection multiple' ayant la valeur 'étendu'...

Dire « Merci » 1

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

CCM 65054 internautes nous ont dit merci ce mois-ci

Messages postés
100
Date d'inscription
mercredi 16 juin 2010
Statut
Membre
Dernière intervention
18 janvier 2016
23
0
Merci
Merci blux. maintenant comment puis-je faire pour récupérer la valeur de la liste dans une requête? J'arrive bien a sélectionner les valeurs (ce qui n'est pas un exploit...) mais j'ai essayé un code pour récupérer les valeurs qui ne fonctionnent pas. Le voici :

Private Sub Liste27_Click()
Dim lngBoucle As Integer
Dim strVariable As String


For lngBoucle = 0 To List27.ListCount - 1

If Liste27.Selected(lItem) = True Then

strVariable = strVariable & Liste27.list(lngBoucle) & ","

ListBox27.Selected(lngBoucle) = False

End If

Next

'Enlever la dernière virgule
strVariable = Left(strVariable, Len(strVariable) - 1)

'Ajouter les informations SQL à la Variable
strVariable = "SELECT MATERIEL.[Type matériel], MATERIEL.Fournisseur, CENTRE.Centre, CENTRE.[Code region], MATERIEL.[Centre de cout], MATERIEL.Marque, MATERIEL.Modèle, MATERIEL.[Multifonction Fax], MATERIEL.[Multifonction Scanner], MATERIEL.[Num serie]FROM MATERIEL, CENTRE, Region, SITE WHERE MATERIEL.[Code site] = SITE.[Code site] And SITE.[Code centre] = CENTRE.[Code centre] And CENTRE.[Code region]=REGION.[Code region]
WHERE Region = " & strVariable"

Requête_region_et_centre_sous_formulaire.RowSource strVariable
Requête_region_et_centre_sous_formulaire.Requery

End Sub

Ma listbox liste27 affiche les régions de la table région.
blux
Messages postés
23911
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
18 mars 2019
2664 -
Et c'est quoi qui ne marche pas ?
jollyjohn
Messages postés
100
Date d'inscription
mercredi 16 juin 2010
Statut
Membre
Dernière intervention
18 janvier 2016
23 -
En fait mon premier problème vient du fait que je n'arrive déjà pas a exécuter une requête dans du code vb même très basique et afficher le résultat dans un sous formulaire. j'ai bien essayé avec ce code des plus basiques pour m'initier mais rien que ça, ça ne fonctionne pas.

Ainsi, imaginons que j'ai une table matériel et un sous formulaire "sous_form". Comment puis-je exécuter la requête et afficher son résultat dans mon sous formulaire via du code vb?

Si vous pouviez me donner un exemple ou même me dire comment faire avec le mien ça m'aiderais beaucoup.

NB : Je n'associe pas directement le sous formulaire à une requête via l'interface car je souhaites que l'on puisse sélectionner plusieurs régions. Ainsi je pense mettre en place des checkbox et changer la requête en fonction des cases qui sont cochées ou non.

je pense ainsi faire quelque chose de ce type :

Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT Code materiel, Centre de cout, Type materiel, Fournisseur, Marque, Modele, Code site, Code centre, Code region FROM MATERIEL, CENTRE WHERE CENTRE!Code centre=SITE!Code centre And CENTRE!Code region=REGION!Code region"
If Me.Cocher2 = True Then
SQL = SQL & "And MATERIEL![Code region] like '*" & Me.Étiquette2 & "*' "
End If
If Me.Cocher4 = True Then
SQL = SQL & "And MATERIEL![Code region] like '*" & Me.Étiquette4 & "*' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
SQL = SQL & ";"

Me.Fille0.RowSource = SQL
Me.Fille0.Requery

Merci d'avance.