Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment utiliser plusieurs valeurs dans une liste de choix ?

11 réponses
Avatar
Brunonix
Bonjour à tous !

Je suis encore novice dans les macros, alrs les codes , n'en parlons pas
tout de suite.
J'ai un problème que je ne sais pas résoudre. Je veux créer i=un formulaire
avec une liste de choix basée sur une table. Je peux autoriser le choix
multiple dans les propriétés. Jusque là, c'est ok. Mais comment faire pour
les retrouver et les utiliser dans un sous formulaire contenat des
informations liées à cette première table?
Exemple : table "Matières" contenant un numéro automatique, et les matières
(français, allemand, etc... le sous formulaire affiche les livres utilisés
par cette matière. Tout fonctionne bien si je ne suis pas en choix multiple
(cas je suppose très classique des formulaires). Je ne sais pas utiliser et
gérer le choix multiples, pourtant capital dans mon cas.

Je vous remercie d'avance, et si vous avez un code, svp, soyez clair de me
dirte ce que je dosi en faire :-).

Bruno

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

pour récupérer les les valeurs multiples d'une liste il faut boucler sur la
liste des valeurs sélectionnées ou appeler chaquevaleur sélectionnée par son
index.
exemple de boucle pour récupérer toutes les valeurs:
Dim I As Variant
For Each I In Me.Liste0.ItemsSelected
msgbox Me!Liste0.Selected(I)
Next I


--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Brunonix" a écrit dans le message de news:
4229f2d9$0$822$
Bonjour à tous !

Je suis encore novice dans les macros, alrs les codes , n'en parlons pas
tout de suite.
J'ai un problème que je ne sais pas résoudre. Je veux créer i=un
formulaire
avec une liste de choix basée sur une table. Je peux autoriser le choix
multiple dans les propriétés. Jusque là, c'est ok. Mais comment faire pour
les retrouver et les utiliser dans un sous formulaire contenat des
informations liées à cette première table?
Exemple : table "Matières" contenant un numéro automatique, et les
matières
(français, allemand, etc... le sous formulaire affiche les livres utilisés
par cette matière. Tout fonctionne bien si je ne suis pas en choix
multiple
(cas je suppose très classique des formulaires). Je ne sais pas utiliser
et
gérer le choix multiples, pourtant capital dans mon cas.

Je vous remercie d'avance, et si vous avez un code, svp, soyez clair de me
dirte ce que je dosi en faire :-).

Bruno




Avatar
Brunonix
Merci du conseil, mais une petite question, ce code, je dois le mettre où?
après focaus, sur un bouton? sur click? Je voudrais simplement que mon sous
formulaire (qui fonctionne je le rappelle lorsque ma liste n'est pas en mode
multiple selection) affiche les infos correspondantes. Dois je mettre cela
sur le formulaire?
Merci.
Avatar
Raymond [mvp]
je te dirais franchement que je ne sais pas où il faut le mettre.
il faut le placer dans un événement dans lequel tu as besoin de la liste des
sélections, c'est-à-dire dans la même fonction où tu utilises la sélection
unique actuellement.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Brunonix" a écrit dans le message de news:
422ae220$0$3120$
Merci du conseil, mais une petite question, ce code, je dois le mettre où?
après focaus, sur un bouton? sur click? Je voudrais simplement que mon
sous
formulaire (qui fonctionne je le rappelle lorsque ma liste n'est pas en
mode
multiple selection) affiche les infos correspondantes. Dois je mettre cela
sur le formulaire?
Merci.




Avatar
Eric
Bonjour Brunonix,

Soit un formulaire indépendant(Formulaire1) avec une zone de liste
nommée Liste0 basée avec l'assistant sur la table des matières tMatiere
et contenant le NumMatière et le nom de la matière (1ere colonne masquée).
Soit un formulaire tabulaire (fLivre) construit sur la table tLivre
affichant tous les champs de cette table.

Dans le formulaire indépendant, faire glisser le formulaire fLivre.
Sur l'évènement Mise à Jour de la liste Liste0, le code ci-dessous :

Private Sub Liste0_AfterUpdate()
Dim txtsql As String, i, restriction As String
txtsql = "select * from tlivre where nummatiere in ("
For Each i In Me.Liste0.ItemsSelected
restriction = restriction & Me.Liste0.ItemData(i) & ","
Next i
If Len(restriction) = 0 Then
txtsql = "select * from tlivre ;"
Else
txtsql = txtsql & Left(restriction, Len(restriction) - 1) & ");"
End If
Me.tLivre.Form.RecordSource = txtsql
Me.tLivre.Form.Requery
Me.Refresh
End Sub

devrait te permettre d'obtenir le résulat souhaité.

Je te joins une bd en exemple (format zip) à l'adresse suivante :
http://cjoint.com/?dgoaloj3m3

A+
Eric

Merci du conseil, mais une petite question, ce code, je dois le mettre où?
après focaus, sur un bouton? sur click? Je voudrais simplement que mon sous
formulaire (qui fonctionne je le rappelle lorsque ma liste n'est pas en mode
multiple selection) affiche les infos correspondantes. Dois je mettre cela
sur le formulaire?
Merci.




Avatar
Brunonix
Alors, là !
Bravo !
Je te remercie de tout coeur ! Je ne pense pas pouvoir te rendre la
pareille, mais si un jour je le peux ... Les hazards du net...
Bruno
Avatar
Eric
Bonsoir Bruno,

Merci pour le retour et
content d'avoir pu t'aider. C'était avec plaisir.

.... Je ne pense pas pouvoir te rendre la
pareille, mais si un jour je le peux ... Les hazards du net...


Si, si, l'occasion se présentera.

A+
Eric

Avatar
Brunonix
Ca marche, mais j'ai un autre problème car j'ai mal construit ma base de
données. En fait, chaque matuère n'est pas en relation directe avec les
livres, mais avec les classes (terminale, BTS, 1ière), et chaque classe a
plusieures livres. J'ai fait une tble de liaison premnant à la fois dans les
livres et à la fois dans les classe et dans les matières. Donc j'ai beaucoup
d'enregistrements.
Le formulaire marche bien mais je retrouve dix fois les mêmes
enregistrements. Ma base pèse 10 Mo. Puis-je t'envoyer ma base? Si oui
comment?


"Eric" a écrit dans le message de news:

| Bonsoir Bruno,
|
| Merci pour le retour et
| content d'avoir pu t'aider. C'était avec plaisir.
|
| > .... Je ne pense pas pouvoir te rendre la
| > pareille, mais si un jour je le peux ... Les hazards du net...
|
| Si, si, l'occasion se présentera.
|
| A+
| Eric
Avatar
Eric
Bonjour Bruno,

Le plus simple, tu importes dans une nouvelle base tes 3 tables et ton
formulaire. Tu compactes la base et la zippes.
Tu vas sur www.cjoint.com et tu récupères et postes ici le lien qui te
sera fourni.
(Attention, le fichier zippé ne doit pas dépasser les 250 Ko.)
Si la base est trop importante, supprimes des enregistrements.
Je regarderai ce que je peux faire

A+
Eric


Ca marche, mais j'ai un autre problème car j'ai mal construit ma base de
données. En fait, chaque matuère n'est pas en relation directe avec les
livres, mais avec les classes (terminale, BTS, 1ière), et chaque classe a
plusieures livres. J'ai fait une tble de liaison premnant à la fois dans les
livres et à la fois dans les classe et dans les matières. Donc j'ai beaucoup
d'enregistrements.
Le formulaire marche bien mais je retrouve dix fois les mêmes
enregistrements. Ma base pèse 10 Mo. Puis-je t'envoyer ma base? Si oui
comment?




Avatar
Brunonix
Ca yest ! J'ai essayé de m'en sortir : il fallait que je fasse une requête
filtrée et que j'applique le code à la requête. Mais j'ai pas compris
pourquoi à la fin, les 3 dernières lignes, il a fallu que je change le nom
de la table apr celui du formulaire pour que ca marche. Mais j'ai un dernier
souci : j'ai un état qui m'imprime toute la requête. quel code dois-je faire
sur un bouton (on click) pour selectionner uniquement ces enregistrement là
à imprimer?
Bruno
Avatar
Brunonix
Dis moi Eric, dans ton fichier exemple, n'y a-t-il pas un moyen simple pour
qu'un état construit de façon identique au formulaire prennent strictement
les mêmes valeurs que le formulaire? Une sourte d'instruction du type
Me.Report.état.source=Me.Formulaire.source ?
1 2