OVH Cloud OVH Cloud

Populer une zone de liste avec la selection d'une autre

7 réponses
Avatar
Jean-Marie
Bonjour a tous.

J'essaie de bâtir pour mon appli un formulaire avec 2 zones de liste qui
fonctionnent comme les listes Champs Disponibles et Champs Sélectionnés du
premier écran de l'assistant création de formulaire de Access: lorsqu'on
sélectionne un élément de la première et clique sur bouton, la deuxième est
populée avec l'entrée précédemment sélectionnée; simultanément cette entrée
disparaît de la première liste.
Je voudrais utiliser l'ensemble des sélections de la deuxième pour filtrer
un état.
Quelqu'un aurait-il un tuyau ou un lien qui puisse m'aider? Je fonctionne
avec Access XP sous Win XP.
Merci beaucoup de votre aide.
Bigger
--
Bigger
Douala, Cameroun

7 réponses

Avatar
pgz
Ponjour,
Si j'ai bien compris, la seconde liste te donne les noms des champs à
utiliser pour le filtre. Mais les valeurs de filtrage, elles sont où?
Par exemple s'il y a un champ "âge", tu trouves où les valeurs d'âges à
retenir?
ZAlut,
pgz


Bonjour a tous.

J'essaie de bâtir pour mon appli un formulaire avec 2 zones de liste qui
fonctionnent comme les listes Champs Disponibles et Champs Sélectionnés du
premier écran de l'assistant création de formulaire de Access: lorsqu'on
sélectionne un élément de la première et clique sur bouton, la deuxième est
populée avec l'entrée précédemment sélectionnée; simultanément cette entrée
disparaît de la première liste.
Je voudrais utiliser l'ensemble des sélections de la deuxième pour filtrer
un état.
Quelqu'un aurait-il un tuyau ou un lien qui puisse m'aider? Je fonctionne
avec Access XP sous Win XP.
Merci beaucoup de votre aide.
Bigger
--
Bigger
Douala, Cameroun


Avatar
Jean-Marie
Merci pgz de ta prompte reaction.
La premiere liste comportera des valeurs, par exemples les numeros
d'immatriculation, a cherher dans une table de vehicules qui compte une
soixantaine d'enregistrements.
Je voudrais pouvoir selectionner par exemple6 vehicles et voir les recettes
qu'elles ont produites.
La deuxieme liste comportera les numeros d'immatriculation selectionnés
J'espere que cela eclaire un peu plus.
--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Ponjour,
Si j'ai bien compris, la seconde liste te donne les noms des champs à
utiliser pour le filtre. Mais les valeurs de filtrage, elles sont où?
Par exemple s'il y a un champ "âge", tu trouves où les valeurs d'âges à
retenir?
ZAlut,
pgz


Bonjour a tous.

J'essaie de bâtir pour mon appli un formulaire avec 2 zones de liste qui
fonctionnent comme les listes Champs Disponibles et Champs Sélectionnés du
premier écran de l'assistant création de formulaire de Access: lorsqu'on
sélectionne un élément de la première et clique sur bouton, la deuxième est
populée avec l'entrée précédemment sélectionnée; simultanément cette entrée
disparaît de la première liste.
Je voudrais utiliser l'ensemble des sélections de la deuxième pour filtrer
un état.
Quelqu'un aurait-il un tuyau ou un lien qui puisse m'aider? Je fonctionne
avec Access XP sous Win XP.
Merci beaucoup de votre aide.
Bigger
--
Bigger
Douala, Cameroun




Avatar
pgz
Ponjour, à nouveau,
Si je comprends bien, ta seconde liste contient les valeurs de filtrage, et
non pas les noms des champs de filtrage.
To pb est donc de construire une chaîne de caractères qui sera à placer
comme filtre de ton état:

Il reste à construire la chaîne strFiltre
Tout dépend de la source de ta liste, c'est-à-dire où on trouve les valeurs.
Si par exemple c'est une table = TabValeurs,

dim rst as DAO.Recordset
Set rst = CurrentDb.OpenRecordset("TabValeurs")

strFiltre = ""
while not rst.EOF
strFiltre = strFiltre & " Immatriculation = '" & rst(Valeur) & "' OR "
rst.MoveNext
Wend
rst.close
set rst = nothing
If strFiltre <> "" then strFiltre = left(strFiltre,len(strFiltre)-3)

MonEtat.Filter = strFiltre
MonEtat.FilterOn = True

En espérant que cela te sera utile,
pgz



Merci pgz de ta prompte reaction.
La premiere liste comportera des valeurs, par exemples les numeros
d'immatriculation, a cherher dans une table de vehicules qui compte une
soixantaine d'enregistrements.
Je voudrais pouvoir selectionner par exemple6 vehicles et voir les recettes
qu'elles ont produites.
La deuxieme liste comportera les numeros d'immatriculation selectionnés
J'espere que cela eclaire un peu plus.
--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Ponjour,
Si j'ai bien compris, la seconde liste te donne les noms des champs à
utiliser pour le filtre. Mais les valeurs de filtrage, elles sont où?
Par exemple s'il y a un champ "âge", tu trouves où les valeurs d'âges à
retenir?
ZAlut,
pgz


Bonjour a tous.

J'essaie de bâtir pour mon appli un formulaire avec 2 zones de liste qui
fonctionnent comme les listes Champs Disponibles et Champs Sélectionnés du
premier écran de l'assistant création de formulaire de Access: lorsqu'on
sélectionne un élément de la première et clique sur bouton, la deuxième est
populée avec l'entrée précédemment sélectionnée; simultanément cette entrée
disparaît de la première liste.
Je voudrais utiliser l'ensemble des sélections de la deuxième pour filtrer
un état.
Quelqu'un aurait-il un tuyau ou un lien qui puisse m'aider? Je fonctionne
avec Access XP sous Win XP.
Merci beaucoup de votre aide.
Bigger
--
Bigger
Douala, Cameroun






Avatar
Jean-Marie
Merci pgz de ta disponibilité
C'est sur que ce tuyau va m'aider. Mais avant de construire le filtre, je
bute sur comment populer la deuxieme liste a partir de la premiere. Quel code
je dois mettre derriere un bouton pour que le clic ajoute l'element
selectionné dans la premiere liste à la deuxieme, en meme temps l'enleve de
la premiere?
Merci pour tout.
--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Ponjour, à nouveau,
Si je comprends bien, ta seconde liste contient les valeurs de filtrage, et
non pas les noms des champs de filtrage.
To pb est donc de construire une chaîne de caractères qui sera à placer
comme filtre de ton état:

Il reste à construire la chaîne strFiltre
Tout dépend de la source de ta liste, c'est-à-dire où on trouve les valeurs.
Si par exemple c'est une table = TabValeurs,

dim rst as DAO.Recordset
Set rst = CurrentDb.OpenRecordset("TabValeurs")

strFiltre = ""
while not rst.EOF
strFiltre = strFiltre & " Immatriculation = '" & rst(Valeur) & "' OR "
rst.MoveNext
Wend
rst.close
set rst = nothing
If strFiltre <> "" then strFiltre = left(strFiltre,len(strFiltre)-3)

MonEtat.Filter = strFiltre
MonEtat.FilterOn = True

En espérant que cela te sera utile,
pgz



Merci pgz de ta prompte reaction.
La premiere liste comportera des valeurs, par exemples les numeros
d'immatriculation, a cherher dans une table de vehicules qui compte une
soixantaine d'enregistrements.
Je voudrais pouvoir selectionner par exemple6 vehicles et voir les recettes
qu'elles ont produites.
La deuxieme liste comportera les numeros d'immatriculation selectionnés
J'espere que cela eclaire un peu plus.
--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Ponjour,
Si j'ai bien compris, la seconde liste te donne les noms des champs à
utiliser pour le filtre. Mais les valeurs de filtrage, elles sont où?
Par exemple s'il y a un champ "âge", tu trouves où les valeurs d'âges à
retenir?
ZAlut,
pgz


Bonjour a tous.

J'essaie de bâtir pour mon appli un formulaire avec 2 zones de liste qui
fonctionnent comme les listes Champs Disponibles et Champs Sélectionnés du
premier écran de l'assistant création de formulaire de Access: lorsqu'on
sélectionne un élément de la première et clique sur bouton, la deuxième est
populée avec l'entrée précédemment sélectionnée; simultanément cette entrée
disparaît de la première liste.
Je voudrais utiliser l'ensemble des sélections de la deuxième pour filtrer
un état.
Quelqu'un aurait-il un tuyau ou un lien qui puisse m'aider? Je fonctionne
avec Access XP sous Win XP.
Merci beaucoup de votre aide.
Bigger
--
Bigger
Douala, Cameroun








Avatar
pgz
Comme souvent il y a plusieurs méthodes. Sans connaître ta base, voici celle
que je te propose. Je suppose que tu as une table des véhicules avec leurs
immatriculations. Tu travailles avec 2 listes non déroulantes.
Immatriculation est un champ texte.
Ajoute un champ booléen par ex bolSel, défaut = faux
la première liste doit te donner les immatriculations sélectionnables
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE Not bolSel;"
la deuxième liste te donne les immatriculations sélectionnées
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE bolSEl;"
Les deux controlSource sont vides
Un clic sur un élément de la liste 1 sélectionne l'élément, le retire de
cette liste, l'ajoute dans la 2.
évènement 'mise à jour' du contrôle de liste 1 :
dim rst as DAO.Recordset
set rst = CurrentDB.OpenRecordset ( "SELECT * FROM TabVéhic WHERE
immatriculation = ' " & Me.Liste1 & "'")
rst.edit
rst("BolSel") = True
rst.update
rst.close
rst = nothing
Me.liste1.RowSource=Me.Liste1.RowSource
Me.Liste2.RowSource=Me.Liste2.RowSource

Et voilà. Les véhicules sélectionnés sont cochés dans leur table.
Il faut aussi prévoir un décochage de BolSel pour toute la table = remise à
zéro de la sélection sur un bouton.
...
set rst = currentDb.OpenRecordset("TabVéhic")
while not rst.EOF
rst.edit
rst("BolSel") = False
rst.update
rst.MoveNext
wend
rst.close
...

Si j'ai compris ton pb...
A plus,
pgz
Avatar
Jean-Marie
Merci beacoup Pgz.

Je vais essayer tout a l'heure et te tenir au courant.

Merci encore

--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Comme souvent il y a plusieurs méthodes. Sans connaître ta base, voici celle
que je te propose. Je suppose que tu as une table des véhicules avec leurs
immatriculations. Tu travailles avec 2 listes non déroulantes.
Immatriculation est un champ texte.
Ajoute un champ booléen par ex bolSel, défaut = faux
la première liste doit te donner les immatriculations sélectionnables
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE Not bolSel;"
la deuxième liste te donne les immatriculations sélectionnées
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE bolSEl;"
Les deux controlSource sont vides
Un clic sur un élément de la liste 1 sélectionne l'élément, le retire de
cette liste, l'ajoute dans la 2.
évènement 'mise à jour' du contrôle de liste 1 :
dim rst as DAO.Recordset
set rst = CurrentDB.OpenRecordset ( "SELECT * FROM TabVéhic WHERE
immatriculation = ' " & Me.Liste1 & "'")
rst.edit
rst("BolSel") = True
rst.update
rst.close
rst = nothing
Me.liste1.RowSource=Me.Liste1.RowSource
Me.Liste2.RowSource=Me.Liste2.RowSource

Et voilà. Les véhicules sélectionnés sont cochés dans leur table.
Il faut aussi prévoir un décochage de BolSel pour toute la table = remise à
zéro de la sélection sur un bouton.
...
set rst = currentDb.OpenRecordset("TabVéhic")
while not rst.EOF
rst.edit
rst("BolSel") = False
rst.update
rst.MoveNext
wend
rst.close
...

Si j'ai compris ton pb...
A plus,
pgz




Avatar
Jean-Marie
Cela a marché super bien. Je me suis meme permis quelques amenagements et ca
fonctionne parfaitement
Gros Merci pgz.
--
Jean-Marie
Douala, Cameroun


"pgz" wrote:

Comme souvent il y a plusieurs méthodes. Sans connaître ta base, voici celle
que je te propose. Je suppose que tu as une table des véhicules avec leurs
immatriculations. Tu travailles avec 2 listes non déroulantes.
Immatriculation est un champ texte.
Ajoute un champ booléen par ex bolSel, défaut = faux
la première liste doit te donner les immatriculations sélectionnables
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE Not bolSel;"
la deuxième liste te donne les immatriculations sélectionnées
RowSource = "SELECT Immatriculation FROM TabVéhic WHERE bolSEl;"
Les deux controlSource sont vides
Un clic sur un élément de la liste 1 sélectionne l'élément, le retire de
cette liste, l'ajoute dans la 2.
évènement 'mise à jour' du contrôle de liste 1 :
dim rst as DAO.Recordset
set rst = CurrentDB.OpenRecordset ( "SELECT * FROM TabVéhic WHERE
immatriculation = ' " & Me.Liste1 & "'")
rst.edit
rst("BolSel") = True
rst.update
rst.close
rst = nothing
Me.liste1.RowSource=Me.Liste1.RowSource
Me.Liste2.RowSource=Me.Liste2.RowSource

Et voilà. Les véhicules sélectionnés sont cochés dans leur table.
Il faut aussi prévoir un décochage de BolSel pour toute la table = remise à
zéro de la sélection sur un bouton.
...
set rst = currentDb.OpenRecordset("TabVéhic")
while not rst.EOF
rst.edit
rst("BolSel") = False
rst.update
rst.MoveNext
wend
rst.close
...

Si j'ai compris ton pb...
A plus,
pgz