Choix multiple liste déroulante base Access

Résolu/Fermé
jollyjohn Messages postés 100 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 18 janvier 2016 - Modifié par jollyjohn le 23/06/2010 à 10:32
jollyjohn Messages postés 100 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 18 janvier 2016 - 28 juin 2010 à 15:02
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.



2 réponses

blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
23 juin 2010 à 11:10
Salut,

dans ce cas, il faut une zone de liste avec l'option 'sélection multiple' ayant la valeur 'étendu'...
1
jollyjohn Messages postés 100 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 18 janvier 2016 37
Modifié par jollyjohn le 28/06/2010 à 11:01
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.
1
blux Messages postés 26001 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 24 avril 2024 3 289
28 juin 2010 à 11:13
Et c'est quoi qui ne marche pas ?
0
jollyjohn Messages postés 100 Date d'inscription mercredi 16 juin 2010 Statut Membre Dernière intervention 18 janvier 2016 37
28 juin 2010 à 15:02
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.
0