Choix multiple liste déroulante base Access

Résolu
jollyjohn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   -  
jollyjohn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. blux Messages postés 2046 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    dans ce cas, il faut une zone de liste avec l'option 'sélection multiple' ayant la valeur 'étendu'...
    1
  2. jollyjohn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   37
     
    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
    1. blux Messages postés 2046 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Et c'est quoi qui ne marche pas ?
      0
    2. jollyjohn Messages postés 100 Date d'inscription   Statut Membre Dernière intervention   37
       
      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