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

liaison zone de liste vers zone de texte

14 réponses
Avatar
ALF
bonjour,
j'essaye de pouvoir faire apparaitre une selection multiple issu d une zone
de liste sur une zone de texte..le resultat fait apparaitre la 1ere selection
de la liste mais pas les autres...
avez vous une idee??...
Voici la procedure installée sur propriete/evenement/Apres mise a jour:

Private Sub ZLISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String

strFiltre = ""
If Me.[ZLISTE DR].ItemsSelected.Count = 0 Then
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![ZLISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & "OR"
strFiltre = strFiltre & "[DR]='" & Me![ZLISTE DR].ItemData(varI) & "'"
Next varI
Me.ZTAMPON = Me.[ZLISTE DR].Column(0, Me.[ZLISTE DR].ListIndex)
Me.ZLISTE_US.Requery
End If

End Sub

ZLISTE DR =zone de liste ZTAMPON= zone de texte

MERCI.
--
ALF

10 réponses

1 2
Avatar
Eric
Bonjour,

Me!ZTAMPON=strFiltre , non ?

bonjour,
j'essaye de pouvoir faire apparaitre une selection multiple issu d une zone
de liste sur une zone de texte..le resultat fait apparaitre la 1ere selection
de la liste mais pas les autres...
avez vous une idee??...
Voici la procedure installée sur propriete/evenement/Apres mise a jour:

Private Sub ZLISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String

strFiltre = ""
If Me.[ZLISTE DR].ItemsSelected.Count = 0 Then
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![ZLISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & "OR"
strFiltre = strFiltre & "[DR]='" & Me![ZLISTE DR].ItemData(varI) & "'"
Next varI
Me.ZTAMPON = Me.[ZLISTE DR].Column(0, Me.[ZLISTE DR].ListIndex)
Me.ZLISTE_US.Requery
End If

End Sub

ZLISTE DR =zone de liste ZTAMPON= zone de texte

MERCI.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ALF
Bonjour,
non apparemment ca ne marche pas avec Me.ZTAMPON=strfiltre ,car on a dans la
zone de texte pour 2 lignes selectionnées: [DR]='AVIGNON OR[DR]='MARSEILLE
etc...si on augmente la selection ..Et ce format semble ne pas plaire à
ZLISTE US..
j'ai essaye d'enlever [DR] et [OR] et cela marche pour 1 seule
selection...il semble que la selection apparait sur une seule ligne dans la
zone de texte et pas sous forme de colonne comme dans la zone de liste...cele
explique peut etre cela??
Avez vous peut etre une autre solution en utilisant la fonction COLUMN et
strfiltre??
Merci de votre soutien....
--
ALF



Bonjour,

Me!ZTAMPON=strFiltre , non ?

bonjour,
j'essaye de pouvoir faire apparaitre une selection multiple issu d une zone
de liste sur une zone de texte..le resultat fait apparaitre la 1ere selection
de la liste mais pas les autres...
avez vous une idee??...
Voici la procedure installée sur propriete/evenement/Apres mise a jour:

Private Sub ZLISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String

strFiltre = ""
If Me.[ZLISTE DR].ItemsSelected.Count = 0 Then
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![ZLISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & "OR"
strFiltre = strFiltre & "[DR]='" & Me![ZLISTE DR].ItemData(varI) & "'"
Next varI
Me.ZTAMPON = Me.[ZLISTE DR].Column(0, Me.[ZLISTE DR].ListIndex)
Me.ZLISTE_US.Requery
End If

End Sub

ZLISTE DR =zone de liste ZTAMPON= zone de texte

MERCI.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Le probleme vient plus de la construction du filtre strFiltre, il ne
plait pas à ZLISTE US ;-)

En effet, strFiltre retourne : [DR]='AVIGNON OR[DR]='MARSEILLE alors que
cela devrait être : [DR]='AVIGNON' OR [DR]='MARSEILLE'
Il manque un espace entre [DR] et OR, et une quote (') après Avignon et
Marseille.

C'est donc dans la boucle qu'il faut modifier :
For Each varI In Me![ZLISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![ZLISTE DR].ItemData(varI) & "'"
Next varI

Ce qui donne :
[DR]='ANTONY' OR [DR]='ARCUEIL' OR [DR]='CLICHY' OR [DR]='EVREUX'

Toutefois si le nom des villes peut contenir des quotes ('), car il en
existe, je mettrai :
strFiltre = strFiltre & "[DR]=" & CHR(34) & Me![ZLISTE
DR].ItemData(varI) & CHR(34)

Bonjour,
non apparemment ca ne marche pas avec Me.ZTAMPON=strfiltre ,car on a dans la
zone de texte pour 2 lignes selectionnées: [DR]='AVIGNON OR[DR]='MARSEILLE
etc...si on augmente la selection ..Et ce format semble ne pas plaire à
ZLISTE US..
j'ai essaye d'enlever [DR] et [OR] et cela marche pour 1 seule
selection...il semble que la selection apparait sur une seule ligne dans la
zone de texte et pas sous forme de colonne comme dans la zone de liste...cele
explique peut etre cela??
Avez vous peut etre une autre solution en utilisant la fonction COLUMN et
strfiltre??
Merci de votre soutien....


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ALF
re,
excuse moi eric car c'est moi qui me suis trompé sur le message
precedent...str filtre retournait bien [DR]= 'MARSEILLE' OR [DR]='AVIGNON'
il y avait bien l'espace et les quotes manquantes...
j'ai essaye avec CHR(34) comme tu me l'a indiqué..mais ZLISTE US reste vide...
les valeurs de ZLISTE DR sont de la forme AVIGNON
MARSEILLE
NICE
ETC...
Ce sont des valeurs sans quotes,j'ai donc essaye de les enlever dans la
procedure mais le resultat reste le meme..les valeurs selectionnes
apparaissent ainsi sur ZTAMPON: AVIGNON MARSEILLE NICE cela marche pour la
1ere selection mais à partir de la 2eme selection..patatra.. plus rien dans
ZLISTE US..
Ilfaudrait peut etre integrer dans la procedure une fonction qui dit "apres
la 1ere selection ,aller à la ligne suivante pour mettre la 2eme selection"
et ainsi de suite..
car on dirait que les 3 selections apparaissent comme une seule dans
ZTAMPON...
ZLISTE US est une zone de liste liée à une requete FILTRE DR et contiend 2
champs DR et US en sachant qu'il peut y avoir plusieurs US par DR...ZLISTE US
pointe vers ZTAMPON..
Merci de votre patience.
--
ALF



Bonjour,

Le probleme vient plus de la construction du filtre strFiltre, il ne
plait pas à ZLISTE US ;-)

En effet, strFiltre retourne : [DR]='AVIGNON OR[DR]='MARSEILLE alors que
cela devrait être : [DR]='AVIGNON' OR [DR]='MARSEILLE'
Il manque un espace entre [DR] et OR, et une quote (') après Avignon et
Marseille.

C'est donc dans la boucle qu'il faut modifier :
For Each varI In Me![ZLISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![ZLISTE DR].ItemData(varI) & "'"
Next varI

Ce qui donne :
[DR]='ANTONY' OR [DR]='ARCUEIL' OR [DR]='CLICHY' OR [DR]='EVREUX'

Toutefois si le nom des villes peut contenir des quotes ('), car il en
existe, je mettrai :
strFiltre = strFiltre & "[DR]=" & CHR(34) & Me![ZLISTE
DR].ItemData(varI) & CHR(34)

Bonjour,
non apparemment ca ne marche pas avec Me.ZTAMPON=strfiltre ,car on a dans la
zone de texte pour 2 lignes selectionnées: [DR]='AVIGNON OR[DR]='MARSEILLE
etc...si on augmente la selection ..Et ce format semble ne pas plaire à
ZLISTE US..
j'ai essaye d'enlever [DR] et [OR] et cela marche pour 1 seule
selection...il semble que la selection apparait sur une seule ligne dans la
zone de texte et pas sous forme de colonne comme dans la zone de liste...cele
explique peut etre cela??
Avez vous peut etre une autre solution en utilisant la fonction COLUMN et
strfiltre??
Merci de votre soutien....


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

Non, il ne faut pas enlever les quotes ou les chr(34).

Au 1er click sur la liste ZLISTE_DR tu obtiens dans ZnTampon :
[DR]='ANTONY' puis au clic suivant : [DR]='ANTONY' OR [DR]='CLICHY'
ainsi de suite. (Si tu n'as pas ça dans ta zone tampon, alors tu n'as
pas mis le code indiqué)
Donc, cette procédure After_Update sur ZLISTE_DR met à jour ta zone
tampon ZnTampon et fait un Requery de ZListe_US. Je ne connais pas la
source de ZListe_US mais ca doit être une requête qui au départ n'a
*pas de clause Where*, du genre Select DR, US From [Filtre DR];
En d'autres termes, rien derriere le nom de la table/requête écrite
après le From à l'exception du point-virgule.

Si c'est le cas, faire :

1- sur l'évènement Load du Formulaire:
Private Sub Form_Load()
Me.[ZLISTE US].Tag = Me.[ZLISTE US].RowSource
End Sub

2 - dans la procédure After_Update() de ZLISTE US
*Après* Me.ZNTAMPON = strFiltre et *avant* Me.[ZLISTE US].Requery

strSQL = Left(Me.[ZLISTE US].Tag, InStr(Me.[ZLISTE US].Tag,
";") - 1) ' tout sur une ligne
strSQL = strSQL & " Where " & ZNTAMPON
Me.[ZLISTE US].RowSource = strSQL


re,
excuse moi eric car c'est moi qui me suis trompé sur le message
precedent...str filtre retournait bien [DR]= 'MARSEILLE' OR [DR]='AVIGNON'
il y avait bien l'espace et les quotes manquantes...
j'ai essaye avec CHR(34) comme tu me l'a indiqué..mais ZLISTE US reste vide...
les valeurs de ZLISTE DR sont de la forme AVIGNON
MARSEILLE
NICE
ETC...
Ce sont des valeurs sans quotes,j'ai donc essaye de les enlever dans la
procedure mais le resultat reste le meme..les valeurs selectionnes
apparaissent ainsi sur ZTAMPON: AVIGNON MARSEILLE NICE cela marche pour la
1ere selection mais à partir de la 2eme selection..patatra.. plus rien dans
ZLISTE US..
Ilfaudrait peut etre integrer dans la procedure une fonction qui dit "apres
la 1ere selection ,aller à la ligne suivante pour mettre la 2eme selection"
et ainsi de suite..
car on dirait que les 3 selections apparaissent comme une seule dans
ZTAMPON...
ZLISTE US est une zone de liste liée à une requete FILTRE DR et contiend 2
champs DR et US en sachant qu'il peut y avoir plusieurs US par DR...ZLISTE US
pointe vers ZTAMPON..
Merci de votre patience.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ALF
re,
cela ne marche toujours pas,ZLISTE US reste vide...
est ce bien sur AFTER UPDATE () de ZLISTE US qu'il faut modifier la
procedure ou bien est ce sur ZLISTE DR?? De toute facon j'ai essaye les deux
pour le meme resultat...
je precise que la requete FILTRE DR(source de ZLISTE US) a un critere sur le
champs DR = [Formulaires]![CHOIX DR]![ZTAMPON] mais que la
propriete/donnees/contenu =FILTRE DR
je peux eventuellement si c'est possible de faire parvenir ma base de donnee
qui n'est pas lourde pour que tu puisse mieux voir le probleme...
Merci..
--
ALF



re,

Non, il ne faut pas enlever les quotes ou les chr(34).

Au 1er click sur la liste ZLISTE_DR tu obtiens dans ZnTampon :
[DR]='ANTONY' puis au clic suivant : [DR]='ANTONY' OR [DR]='CLICHY'
ainsi de suite. (Si tu n'as pas ça dans ta zone tampon, alors tu n'as
pas mis le code indiqué)
Donc, cette procédure After_Update sur ZLISTE_DR met à jour ta zone
tampon ZnTampon et fait un Requery de ZListe_US. Je ne connais pas la
source de ZListe_US mais ca doit être une requête qui au départ n'a
*pas de clause Where*, du genre Select DR, US From [Filtre DR];
En d'autres termes, rien derriere le nom de la table/requête écrite
après le From à l'exception du point-virgule.

Si c'est le cas, faire :

1- sur l'évènement Load du Formulaire:
Private Sub Form_Load()
Me.[ZLISTE US].Tag = Me.[ZLISTE US].RowSource
End Sub

2 - dans la procédure After_Update() de ZLISTE US
*Après* Me.ZNTAMPON = strFiltre et *avant* Me.[ZLISTE US].Requery

strSQL = Left(Me.[ZLISTE US].Tag, InStr(Me.[ZLISTE US].Tag,
";") - 1) ' tout sur une ligne
strSQL = strSQL & " Where " & ZNTAMPON
Me.[ZLISTE US].RowSource = strSQL


re,
excuse moi eric car c'est moi qui me suis trompé sur le message
precedent...str filtre retournait bien [DR]= 'MARSEILLE' OR [DR]='AVIGNON'
il y avait bien l'espace et les quotes manquantes...
j'ai essaye avec CHR(34) comme tu me l'a indiqué..mais ZLISTE US reste vide...
les valeurs de ZLISTE DR sont de la forme AVIGNON
MARSEILLE
NICE
ETC...
Ce sont des valeurs sans quotes,j'ai donc essaye de les enlever dans la
procedure mais le resultat reste le meme..les valeurs selectionnes
apparaissent ainsi sur ZTAMPON: AVIGNON MARSEILLE NICE cela marche pour la
1ere selection mais à partir de la 2eme selection..patatra.. plus rien dans
ZLISTE US..
Ilfaudrait peut etre integrer dans la procedure une fonction qui dit "apres
la 1ere selection ,aller à la ligne suivante pour mettre la 2eme selection"
et ainsi de suite..
car on dirait que les 3 selections apparaissent comme une seule dans
ZTAMPON...
ZLISTE US est une zone de liste liée à une requete FILTRE DR et contiend 2
champs DR et US en sachant qu'il peut y avoir plusieurs US par DR...ZLISTE US
pointe vers ZTAMPON..
Merci de votre patience.


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour,

Oui, j'avais, par copier-coller, fait une erreur. Il s'agit bien de
LISTE_DR_AfterUpdate()

Reprenons au début.

1- Supprimes le critere (DR = [Formulaires]![CHOIX DR]![ZTAMPON]) dans
ta requête Filtre DR et le tri s'il y en a un.

2 - A Propriete/Donnée/Contenu de ta liste ZLISTE US, mets :
Select DR, US From [Filtre DR]; '(très imporant le ; final)
puisque ta requête n'a que 2 champs.
Onglet Format de ZLISTE US, propriété Largeur des colonnes :
ne met rien pour afficher les 2 colonnes.

3 - Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
Me.[LISTE US].Tag = Me.[LISTE US].RowSource
' si on veut LISTE US vide au 1er affichage
Me.[LISTE US].RowSource = ""
End Sub

4 - Sur l'évènement Après Mise à jour de ZLISTE DR
Private Sub LISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String
strFiltre = ""
If Me![LISTE DR].ItemsSelected.Count = 0 Then
Me![LISTE US].RowSource = ""
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![LISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![LISTE
DR].ItemData(varI) & "'"
Next varI
Me.ZNTAMPON = strFiltre
strSQL = Left(Me![LISTE US].Tag, InStr(Me![LISTE US].Tag, ";") - 1)
strSQL = strSQL & " Where " & ZNTAMPON
Me![LISTE US].RowSource = strSQL
Me![LISTE US].Requery
End If
End Sub

Ca devrait marcher. On peut améliorer par la suite.

re,
cela ne marche toujours pas,ZLISTE US reste vide...
est ce bien sur AFTER UPDATE () de ZLISTE US qu'il faut modifier la
procedure ou bien est ce sur ZLISTE DR?? De toute facon j'ai essaye les deux
pour le meme resultat...
je precise que la requete FILTRE DR(source de ZLISTE US) a un critere sur le
champs DR = [Formulaires]![CHOIX DR]![ZTAMPON] mais que la
propriete/donnees/contenu =FILTRE DR
je peux eventuellement si c'est possible de faire parvenir ma base de donnee
qui n'est pas lourde pour que tu puisse mieux voir le probleme...
Merci..


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
ALF
Bonjour,
c'est parfait cela marche mais il faut cependant faire Select [FILTRE
DR].DR, [FILTRE DR].US From[FILTRE DR]; 'au lieu de Select DR, US From[FILTRE
DR]; sinon cela ne marche pas...
un grand MERCI, Eric, pour ton savoir faire...
pour satisfaire ma curiosité,peux tu m'expliquer
1) à quoi sert ce ;final à la fin du sql et pourquoi est ce si important??
2)à quoi sert la fonction Tag??que je ne connais pas..

Merci encore pour tout...


ALF



Bonjour,

Oui, j'avais, par copier-coller, fait une erreur. Il s'agit bien de
LISTE_DR_AfterUpdate()

Reprenons au début.

1- Supprimes le critere (DR = [Formulaires]![CHOIX DR]![ZTAMPON]) dans
ta requête Filtre DR et le tri s'il y en a un.

2 - A Propriete/Donnée/Contenu de ta liste ZLISTE US, mets :
Select DR, US From [Filtre DR]; '(très imporant le ; final)
puisque ta requête n'a que 2 champs.
Onglet Format de ZLISTE US, propriété Largeur des colonnes :
ne met rien pour afficher les 2 colonnes.

3 - Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
Me.[LISTE US].Tag = Me.[LISTE US].RowSource
' si on veut LISTE US vide au 1er affichage
Me.[LISTE US].RowSource = ""
End Sub

4 - Sur l'évènement Après Mise à jour de ZLISTE DR
Private Sub LISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String
strFiltre = ""
If Me![LISTE DR].ItemsSelected.Count = 0 Then
Me![LISTE US].RowSource = ""
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![LISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![LISTE
DR].ItemData(varI) & "'"
Next varI
Me.ZNTAMPON = strFiltre
strSQL = Left(Me![LISTE US].Tag, InStr(Me![LISTE US].Tag, ";") - 1)
strSQL = strSQL & " Where " & ZNTAMPON
Me![LISTE US].RowSource = strSQL
Me![LISTE US].Requery
End If
End Sub

Ca devrait marcher. On peut améliorer par la suite.

re,
cela ne marche toujours pas,ZLISTE US reste vide...
est ce bien sur AFTER UPDATE () de ZLISTE US qu'il faut modifier la
procedure ou bien est ce sur ZLISTE DR?? De toute facon j'ai essaye les deux
pour le meme resultat...
je precise que la requete FILTRE DR(source de ZLISTE US) a un critere sur le
champs DR = [Formulaires]![CHOIX DR]![ZTAMPON] mais que la
propriete/donnees/contenu =FILTRE DR
je peux eventuellement si c'est possible de faire parvenir ma base de donnee
qui n'est pas lourde pour que tu puisse mieux voir le probleme...
Merci..


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
ALF
re,
suite a l'envoi precedent,j'ai oublié une autre question qui trottait dans
ma tete...et dont je n'arrive pas a trouver la solution..
j'aimerais avoir la possibilite (en plus des selections individuelles) de
selectionner tous les elements de ZLISTE DR plutot que de selectionner un par
un l'ensemble des choix,car la liste risque de s'allonger a l'avenir....
en bref,pouvoir tout selectionner sans utiliser un bouton..y a t il une
astuce...
je pensais par ex.que en laissant le controle a blanc tous les
enregistrements pourraient etre selectionnes...mais comment l'appliquer...
Merci..
--
ALF



Bonjour,

Oui, j'avais, par copier-coller, fait une erreur. Il s'agit bien de
LISTE_DR_AfterUpdate()

Reprenons au début.

1- Supprimes le critere (DR = [Formulaires]![CHOIX DR]![ZTAMPON]) dans
ta requête Filtre DR et le tri s'il y en a un.

2 - A Propriete/Donnée/Contenu de ta liste ZLISTE US, mets :
Select DR, US From [Filtre DR]; '(très imporant le ; final)
puisque ta requête n'a que 2 champs.
Onglet Format de ZLISTE US, propriété Largeur des colonnes :
ne met rien pour afficher les 2 colonnes.

3 - Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
Me.[LISTE US].Tag = Me.[LISTE US].RowSource
' si on veut LISTE US vide au 1er affichage
Me.[LISTE US].RowSource = ""
End Sub

4 - Sur l'évènement Après Mise à jour de ZLISTE DR
Private Sub LISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String
strFiltre = ""
If Me![LISTE DR].ItemsSelected.Count = 0 Then
Me![LISTE US].RowSource = ""
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![LISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![LISTE
DR].ItemData(varI) & "'"
Next varI
Me.ZNTAMPON = strFiltre
strSQL = Left(Me![LISTE US].Tag, InStr(Me![LISTE US].Tag, ";") - 1)
strSQL = strSQL & " Where " & ZNTAMPON
Me![LISTE US].RowSource = strSQL
Me![LISTE US].Requery
End If
End Sub

Ca devrait marcher. On peut améliorer par la suite.

re,
cela ne marche toujours pas,ZLISTE US reste vide...
est ce bien sur AFTER UPDATE () de ZLISTE US qu'il faut modifier la
procedure ou bien est ce sur ZLISTE DR?? De toute facon j'ai essaye les deux
pour le meme resultat...
je precise que la requete FILTRE DR(source de ZLISTE US) a un critere sur le
champs DR = [Formulaires]![CHOIX DR]![ZTAMPON] mais que la
propriete/donnees/contenu =FILTRE DR
je peux eventuellement si c'est possible de faire parvenir ma base de donnee
qui n'est pas lourde pour que tu puisse mieux voir le probleme...
Merci..


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonsoir,

1 - Le SQL impose de préfixer les champs du nom de la table/requête
source (comme [FILTRE DR].US) dans le seul cas où l'origine du champ est
ambigü, c'est à dire qu'il peut provenir de plusieurs tables/requêtes
présentes dans la requête.
Sinon, cela n'est pas nécessaire ce qui est ton cas d'après tes posts.

2 - Le ; est la marque de fin d'une instruction SQL dans 95% des cas.
Comme je teste sa présence pour construire le SQL de la LISTE US et que
je n'ai pas fait de test d'absence (pour faire vite), son absence
génererait une erreur. (Mais on peut toujours améliorer).

3 - La propriété Tag (Remarque en french) permet de stocker une valeur
(dans ton cas, le SQL initial de LISTE US), car si je ne passe pas par
là, au clic suivant sur LISTE DR, le SQL de LISTE US que je récupèrerai
contiendrait une clause WHERE (suite au 1er clic sur LISTE DR) et donc
le traitement pour l'éliminer serait fastidieux. En fait la propriété
Tag peut être utilisée comme un genre de 'mémoire'.

4 - Sélectionner tous les éléments de la liste LISTE DR reviendrait à ne
rien filtrer (comme te l'a déjà indiqué Pierre(3Stone)). Donc si tu ne
cliques rien dans LISTE DR, LISTE US Affichera tous les items si tu mets
en commentaire dans la Form_Load() la ligne
Me.[LISTE US].RowSource = ""
Maintenant, si tu veux, quand tu déselectionnes les items de LISTE DR,
afficher tous les items dans Liste US, il te suffit de mettre avant la
MsgBox:
Me![LISTE US].RowSource = Me![LISTE US].Tag
Me![LISTE US].Requery

Je t'avais proposé Me![LISTE US].RowSource = "" car quand plus d'item
sélectionné dans LISTE DR, LISTE US n'affiche rien.

Bonjour,
c'est parfait cela marche mais il faut cependant faire Select [FILTRE
DR].DR, [FILTRE DR].US From[FILTRE DR]; 'au lieu de Select DR, US From[FILTRE
DR]; sinon cela ne marche pas...
un grand MERCI, Eric, pour ton savoir faire...
pour satisfaire ma curiosité,peux tu m'expliquer
1) à quoi sert ce ;final à la fin du sql et pourquoi est ce si important??
2)à quoi sert la fonction Tag??que je ne connais pas..

Merci encore pour tout...


ALF




Bonjour,

Oui, j'avais, par copier-coller, fait une erreur. Il s'agit bien de
LISTE_DR_AfterUpdate()

Reprenons au début.

1- Supprimes le critere (DR = [Formulaires]![CHOIX DR]![ZTAMPON]) dans
ta requête Filtre DR et le tri s'il y en a un.

2 - A Propriete/Donnée/Contenu de ta liste ZLISTE US, mets :
Select DR, US From [Filtre DR]; '(très imporant le ; final)
puisque ta requête n'a que 2 champs.
Onglet Format de ZLISTE US, propriété Largeur des colonnes :
ne met rien pour afficher les 2 colonnes.

3 - Sur l'évènement Chargement du formulaire:
Private Sub Form_Load()
Me.[LISTE US].Tag = Me.[LISTE US].RowSource
' si on veut LISTE US vide au 1er affichage
Me.[LISTE US].RowSource = ""
End Sub

4 - Sur l'évènement Après Mise à jour de ZLISTE DR
Private Sub LISTE_DR_AfterUpdate()
Dim varI As Variant
Dim strFiltre As String
strFiltre = ""
If Me![LISTE DR].ItemsSelected.Count = 0 Then
Me![LISTE US].RowSource = ""
MsgBox "Aucun client n'a été sélectionné"
Else
For Each varI In Me![LISTE DR].ItemsSelected
If strFiltre <> "" Then strFiltre = strFiltre & " OR "
strFiltre = strFiltre & "[DR]='" & Me![LISTE
DR].ItemData(varI) & "'"
Next varI
Me.ZNTAMPON = strFiltre
strSQL = Left(Me![LISTE US].Tag, InStr(Me![LISTE US].Tag, ";") - 1)
strSQL = strSQL & " Where " & ZNTAMPON
Me![LISTE US].RowSource = strSQL
Me![LISTE US].Requery
End If
End Sub

Ca devrait marcher. On peut améliorer par la suite.


re,
cela ne marche toujours pas,ZLISTE US reste vide...
est ce bien sur AFTER UPDATE () de ZLISTE US qu'il faut modifier la
procedure ou bien est ce sur ZLISTE DR?? De toute facon j'ai essaye les deux
pour le meme resultat...
je precise que la requete FILTRE DR(source de ZLISTE US) a un critere sur le
champs DR = [Formulaires]![CHOIX DR]![ZTAMPON] mais que la
propriete/donnees/contenu =FILTRE DR
je peux eventuellement si c'est possible de faire parvenir ma base de donnee
qui n'est pas lourde pour que tu puisse mieux voir le probleme...
Merci..


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



1 2