Tutoriel réalisé avec Access 2013
Un lecteur m’a demandé récemment comment créer une liste déroulante à choix multiple sur Access. Je profite donc de ce tutoriel pour vous faire partager la réponse donnée.
J’ai une Table Clients à laquelle je souhaite ajouter un champ Équipements utilisés.
Comme un client peut avoir plusieurs équipements, la liste déroulante à choix multiple est nécessaire pour ce champ.
En Mode Création , sur la Table Clients, je crée donc un nouveau champ auquel j’ajoute une liste déroulante. Cette liste se crée exactement de la même manière qu’une liste déroulante classique, je vous invite donc à voir ou revoir le tutoriel sur la création d’une table Access lorsque j’avais créé le champ Civilité.
Une fois la liste créée grâce à l’Assistant Liste de choix, allez sur l’onglet Liste de choix, dans les Propriétés du champ, et, à la ligne Autoriser plusieurs valeurs, changez le Non en Oui.
Enregistrez votre table et passez en Mode Feuille de données . Désormais, sur le champ Équipements utilisés, j’ai une liste déroulante avec des cases à cocher :
Une fois le ou les choix validés, votre champ affichera les choix séparés par des points-virgules :
Bonjour,
Une fois la liste de choix créée, peut-on revenir en arrière ?
Si l’on a choisi choix multiple et que finalement on préfère choix unique…
Bonjour,
Je viens d’essayer et, apparemment, non. Une fois que la table est enregistrée avec un choix multiple, ce n’est plus modifiable.
Bonjour,
S’il vous plaît, est-il possible de faire un calcul reliant les éléments de la liste et des champs calculés ?
Par exemple, éléments de la liste : nombre par élément x prix unitaire = total par élément.
Merci à vous.
Bonjour Marz,
Peut-être avec une requête, mais je n’ai jamais essayé et, là, la liste a été créée sur la table.
Sauf erreur de ma part, cela n’est possible que par requête :
En fait, dans une requête donnée, vous créez un champ calculé. Ensuite, vous liez le champ de cette requête à la liste de choix (via l’assistant au moment de la création, lorsqu’il demande la table ou la requête à lier, etc.) et le tour est joué !
Veillez à faire en sorte que la requête dispose d’un champ numéro d’identifiant unique (à récupérer de la table sur laquelle est basée la requête), de manière à ce que tout choix dans la liste puisse, en arrière-plan, être enregistré via cet identifiant.
En revanche, il est possible d’aérer ou d’enrichir la présentation de base…
Là encore, la requête est un outil précieux (voir ma réponse un peu plus haut).
Dans le champ calculé auquel est liée la liste de choix (pour affichage des valeurs), vous ajoutez un ou plusieurs espaces, avant et/ou après, ou tout autre signe de ponctuation (tiret, etc.) de manière à ce que chacune des valeurs s’affichant sur la ligne se trouve ainsi déterminée par l’équivalent d’un séparateur personnalisé.
Jean-Louis
Merci Jean-Louis.
Bonjour Lydia,
S’il vous plaît, est-il possible de faire un retour à la ligne après chaque choix dans mon formulaire ?
Merci.
Bonjour Khaoula,
Non, c’est la présentation par défaut.
Merci.
Bonjour,
Génial toutes ces infos 😉
J’ai créé un menu déroulant, mais je voudrais qu’il apparaisse par ordre alphabétique… Je n’arrive pas à utiliser l’icône « tri par ordre croissant »…
Un petit tuyau pour m’aider ?
Merci beaucoup.
Bonjour,
Si votre liste est alimentée par un champ d’une autre table, ouvrez la ressource dans le champ de la table et appliquez un tri croissant comme dans une requête classique.
Bonjour,
Je travaille avec Access 2013 et je ne vois pas : Autoriser plusieurs valeurs.
Est-ce que cela a disparu sous Access 2013 ?
Bonjour,
Lorsque vous modifiiez la table et êtes sur le champ en question, vous avez dans l’onglet de modification de la liste, la possibilité d’autoriser plusieurs valeurs.
Bonjour Lydia,
Voilà mon problème, c’est que je ne trouve pas la ligne « Autoriser plusieurs valeurs » dans les Propriétés du champ, je travaille sur Access 2010.
Merci.
Bonjour Mehdi,
Elle se trouve toujours dans l’onglet Liste de choix dès que votre champ est une liste déroulante.
Bonjour,
Est-il possible de limiter le nombre de choix maximum d’une liste ?
J’ai une liste à plusieurs valeurs avec 50 lignes de choix où il ne faut en choisir que 4 maximum.
Merci.
Bonjour,
Oui, mais en VBA.
Merci, le code indique bien 4 choix max, mais l’ajout se fait quand même.
Cordialement.
Il faut peut-être ajouter
Cancel = True
après le message de limite.Bonjour Lydia,
Merci pour tous ces tutoriels, c’est très apprécié étant débutante dans Access.
Toutefois, j’ai une question pour les listes à choix multiple. Je crée une liste à choix multiple qui comptabilise plusieurs services différents. Je désire que les personnes puissent sélectionner un service plus général, tel que « Maison » et qu’en sélectionnant celui-là, une sous-catégorie s’ouvre en offrant plusieurs autres choix à cocher, tels qu' »intérieur », « extérieur », « terrain », et que, finalement, si lorsque la personne sélectionne une sous-catégorie telle qu »intérieur’, une dernière catégorie à choix multiple s’ouvrirait pour sélectionner le type de service, tel qu’ »entretiens ménagers », « petits travaux », etc.
Est-ce que vous pensez que cette procédure serait possible et sauriez-vous comment je pourrais procéder ?
Merci beaucoup.
Bonjour Audrey,
Avez-vous essayé avec les listes en cascade (je ne sais pas si ça fonctionne avec les choix multiples) ?
Bonjour et merci.
En ajoutant
Cancel = True
, l’ajout ne se fait pas et la liste reste affichée. Si les cases sont décochées, impossible de valider et message d’erreur d’Access.J’ai essayé plusieurs méthodes, mais rien ne fonctionne.
Merci.
Bonjour,
Après pas mal de recherches sur divers forums, voici le code qui fonctionne quand je teste sur une de mes BDD (3 choix maximum et Test étant ma liste) :
Private Sub Test_AfterUpdate()
Dim Counter As Integer
Dim SelectedCount As Integer
SelectedCount = 0
For Counter = 1 To Test.ListCount Step 1
If Test.Selected(Counter - 1) = True Then
SelectedCount = SelectedCount + 1
End If
Next Counter
If SelectedCount > 3 Then
Test.Selected(Test.ListIndex) = False
MsgBox "3 choix maximum", vbInformation + vbOKOnly, "Erreur"
Test.Value = Array()
End If
End Sub
Bonjour Lydia,
J’ai créé une requête, une liste de choix qui autorise plusieurs valeurs et le lien [Formulaires]![Formations réalisées]![Matricule] sur le critère champ Matricule pour exécuter cette requête selon les matricules que j’ai sélectionnés, mais ça n’a pas marché.
S’il vous plaît, votre aide est appréciée.
Bonjour Aziz,
Qu’est-ce qui pose problème ? La liste déroulante à choix multiple ?
Si je mets « Non » dans « Autorise plusieurs valeurs » dans le champ Matricule de la table, la requête qui est basée sur cette table s’exécute et je peux avoir le résultat basé sur le choix que j’ai fait, mais pas lorsque je mets « Oui ».
Cela doit surement être à cause de la manière dont Access stocke les informations d’une liste à choix multiple (à la suite, séparées par des points-virgules). Malheureusement, je ne vois pas comment procéder autrement.
Bonjour, comment faire pour récupérer toutes les valeurs sélectionnées dans une liste déroulante à choix multiple qui se trouvent dans un formulaire ?
Bonjour,
Vous souhaitez les utiliser dans quel but ? Car elles sont bien dans le champ de la table où elles sont stockées.
Bonjour, je souhaite les récupérer et les mettre dans le corps d’un e-mail.
J’arrive à récupérer la 1ère, mais pas les autres.
Je le fais en VBA.
Bonjour,
Voici un petit bout de code à adapter pour créer le champ qui récupèrera tous les e-mails :
Dim Element As Variant
Dim Monchamp As String
Set MonCtl = Forms!Nomduformulaire!Nomduchampemail
For Each Element In MonCtl.ItemsSelected
Monchamp = Monchamp & " " & MonCtl.Column(1, Element)
Next
Il est ensuite à utiliser pour l’e-mail.
Merci j’en prendrai grand soin.
Bien à vous.