UTILISATION DE LISTE POUR CRITERE DE RECHERCHE DANS FORMULAIRE

Le
Marc
Bonjour

J'essayes de batir un formulaire avec 6 listes qui me servent a définir les
enr dans un formulaire suite a une recharche et de l'aide de R.SENEQUE j'ai
trouvé ce code que je duplique autant de fois que j'ai de listes si j'ai
tout compris.

petit soucis parfois le code bloque ici : For Each varItm1 In
Ctl1.ItemsSelected en me mettant "bloc sans with" ???! aie pb & de plus pour
ne pas obliger les personnes quant elle veuelnt tous les enr d'une liste
j'ai mis "*" dans chaque liste en début et la ça marche pas pour aide la
requete ressemble a cela :

SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) AND ((CompareList1([AXES]))=True));

avec une liste contenant des rubriques & l'autre des axes et un bouton MAJ
avec le code suivant :

If (Not PrepareList(Me.Name, Me.Liste1.Name)) Or (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery

End If




Option Compare Database
Option Explicit

Dim Frm As Form
Dim Ctl As Control
Dim varItm As Variant
Dim Frm1 As Form
Dim Ctl1 As Control
Dim varItm1 As Variant

Public Function PrepareList(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList
Set Frm = Forms(FormName)
Set Ctl = Frm(ControlName)
If Ctl.ItemsSelected.Count = 0 Then GoTo Err_PrepareList
PrepareList = True
Exit Function
Err_PrepareList:
PrepareList = False
End Function

Public Function CompareList(ParameterValue As Variant) As Boolean
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

******** DUPLICATION*********

Public Function PrepareList1(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList1
Set Frm1 = Forms(FormName)
Set Ctl1 = Frm(ControlName)
If Ctl1.ItemsSelected.Count = 0 Then GoTo Err_PrepareList1
PrepareList1 = True
Exit Function
Err_PrepareList1:
PrepareList1 = False
End Function

Public Function CompareList1(ParameterValue1 As Variant) As Boolean
For Each varItm1 In Ctl1.ItemsSelected
If CStr(ParameterValue1) = Ctl1.ItemData(varItm1) Then
CompareList1 = True
Exit Function
End If
Next varItm1
CompareList1 = False
End Function

je recapitule pourquoi svp ça bloque et mets "bloc sans with" ?! et comme
lui faire comprendre dans ma liste que "*" et comme tous , en mettant ceci
dans la requete "comme comparelist([rubrique])" ?

Merci bcp Marc & bonne journée
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thierry (ze Titi)
Le #6388221
Bonjour Marc

2 petites choses avant de répondre. Par souci de clarté, proscris les abbréviations de ton langage, on est sur un forum, pas sur un téléphone mobile... ;-) Par ailleurs, toujours par souci de clarté, utilise la ponctuation, ça nous aidera à mieux comprendre. :o)

Dans ta requête, tu mets simplement le nom des contrôles. Je pense qu'il faut préciser le chemin complet vers lesdits contrôles, à savoir:

SELECT [RESULTAT PAR AXES].* FROM [RESULTAT PAR AXES] WHERE (((CompareList(Forms![tonFormulaire]![Rubrique]))=True) AND ((CompareList1(Forms![tonFormulaire]![AXES]))=True));


Dans ton message
Bonjour

J'essayes de batir un formulaire avec 6 listes qui me servent a définir les
enr dans un formulaire suite a une recharche et de l'aide de R.SENEQUE j'ai
trouvé ce code que je duplique autant de fois que j'ai de listes si j'ai tout
compris....

petit soucis parfois le code bloque ici : For Each varItm1 In
Ctl1.ItemsSelected en me mettant "bloc sans with" ???! aie pb & de plus pour
ne pas obliger les personnes quant elle veuelnt tous les enr d'une liste j'ai
mis "*" dans chaque liste en début et la ça marche pas pour aide la requete
ressemble a cela :

SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) AND ((CompareList1([AXES]))=True));

avec une liste contenant des rubriques & l'autre des axes et un bouton MAJ
avec le code suivant :

If (Not PrepareList(Me.Name, Me.Liste1.Name)) Or (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery

End If




Option Compare Database
Option Explicit

Dim Frm As Form
Dim Ctl As Control
Dim varItm As Variant
Dim Frm1 As Form
Dim Ctl1 As Control
Dim varItm1 As Variant

Public Function PrepareList(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList
Set Frm = Forms(FormName)
Set Ctl = Frm(ControlName)
If Ctl.ItemsSelected.Count = 0 Then GoTo Err_PrepareList
PrepareList = True
Exit Function
Err_PrepareList:
PrepareList = False
End Function

Public Function CompareList(ParameterValue As Variant) As Boolean
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

******** DUPLICATION*********

Public Function PrepareList1(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList1
Set Frm1 = Forms(FormName)
Set Ctl1 = Frm(ControlName)
If Ctl1.ItemsSelected.Count = 0 Then GoTo Err_PrepareList1
PrepareList1 = True
Exit Function
Err_PrepareList1:
PrepareList1 = False
End Function

Public Function CompareList1(ParameterValue1 As Variant) As Boolean
For Each varItm1 In Ctl1.ItemsSelected
If CStr(ParameterValue1) = Ctl1.ItemData(varItm1) Then
CompareList1 = True
Exit Function
End If
Next varItm1
CompareList1 = False
End Function

je recapitule pourquoi svp ça bloque et mets "bloc sans with" ?! et comme lui
faire comprendre dans ma liste que "*" et comme tous , en mettant ceci dans
la requete "comme comparelist([rubrique])" ?

Merci bcp Marc & bonne journée


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info

Marc
Le #6388111
Merci Thierry

ça fonctionne pas :( a ce niveau : If CStr(ParameterValue) =
Ctl.ItemData(varItm) Then (il met utilisation incorrect de Null) merci de
votre aide

ps : promis je m'achetes un Bescherelle :)
Marc



"Thierry (ze Titi)" message de news:
Bonjour Marc

2 petites choses avant de répondre. Par souci de clarté, proscris les
abbréviations de ton langage, on est sur un forum, pas sur un téléphone
mobile... ;-) Par ailleurs, toujours par souci de clarté, utilise la
ponctuation, ça nous aidera à mieux comprendre. :o)

Dans ta requête, tu mets simplement le nom des contrôles. Je pense qu'il
faut préciser le chemin complet vers lesdits contrôles, à savoir:

SELECT [RESULTAT PAR AXES].* FROM [RESULTAT PAR AXES] WHERE
(((CompareList(Forms![tonFormulaire]![Rubrique]))=True) AND
((CompareList1(Forms![tonFormulaire]![AXES]))=True));


Dans ton message 10/10/2007 jour de Saint Ghislain, tu as pris l'initiative de nous narrer
les faits suivants:
Bonjour

J'essayes de batir un formulaire avec 6 listes qui me servent a définir
les
enr dans un formulaire suite a une recharche et de l'aide de R.SENEQUE
j'ai
trouvé ce code que je duplique autant de fois que j'ai de listes si j'ai
tout
compris....

petit soucis parfois le code bloque ici : For Each varItm1 In
Ctl1.ItemsSelected en me mettant "bloc sans with" ???! aie pb & de plus
pour
ne pas obliger les personnes quant elle veuelnt tous les enr d'une liste
j'ai
mis "*" dans chaque liste en début et la ça marche pas pour aide la
requete
ressemble a cela :

SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) AND ((CompareList1([AXES]))=True));

avec une liste contenant des rubriques & l'autre des axes et un bouton
MAJ
avec le code suivant :

If (Not PrepareList(Me.Name, Me.Liste1.Name)) Or (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery

End If




Option Compare Database
Option Explicit

Dim Frm As Form
Dim Ctl As Control
Dim varItm As Variant
Dim Frm1 As Form
Dim Ctl1 As Control
Dim varItm1 As Variant

Public Function PrepareList(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList
Set Frm = Forms(FormName)
Set Ctl = Frm(ControlName)
If Ctl.ItemsSelected.Count = 0 Then GoTo Err_PrepareList
PrepareList = True
Exit Function
Err_PrepareList:
PrepareList = False
End Function

Public Function CompareList(ParameterValue As Variant) As Boolean
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

******** DUPLICATION*********

Public Function PrepareList1(FormName As String, _
ControlName As String) As Boolean
On Error GoTo Err_PrepareList1
Set Frm1 = Forms(FormName)
Set Ctl1 = Frm(ControlName)
If Ctl1.ItemsSelected.Count = 0 Then GoTo Err_PrepareList1
PrepareList1 = True
Exit Function
Err_PrepareList1:
PrepareList1 = False
End Function

Public Function CompareList1(ParameterValue1 As Variant) As Boolean
For Each varItm1 In Ctl1.ItemsSelected
If CStr(ParameterValue1) = Ctl1.ItemData(varItm1) Then
CompareList1 = True
Exit Function
End If
Next varItm1
CompareList1 = False
End Function

je recapitule pourquoi svp ça bloque et mets "bloc sans with" ?! et comme
lui
faire comprendre dans ma liste que "*" et comme tous , en mettant ceci
dans
la requete "comme comparelist([rubrique])" ?

Merci bcp Marc & bonne journée


--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





Thierry (ze Titi)
Le #6388081
Tu pourrais donner le lien où tu as trouvé le code, s'il te plaît ?

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info
Thierry (ze Titi)
Le #6388061
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut ne rien y avoir de sélectionné dans l'une des listes, voire les deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info
Marc
Le #6387601
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une liste
& non plusiseurs non ?

Marc
"Thierry (ze Titi)" message de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut ne
rien y avoir de sélectionné dans l'une des listes, voire les deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info




Thierry (ze Titi)
Le #6387581
Sur ce point, d'accord. Mais dans ce cas, c'est ta requête qu'il faut
que tu revoies puisque tu fais appel à tes deux listes...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une liste &
non plusiseurs non ?

Marc
"Thierry (ze Titi)" de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut ne
rien y avoir de sélectionné dans l'une des listes, voire les deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info


Marc
Le #6387461
Donc je mets le and ici : If (Not PrepareList(Me.Name, Me.Liste1.Name)) And
(Not PrepareList1(Me.Name, Me.Liste2.Name)) Then

et mets un or dans ma requete :
SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) or ((CompareList1([AXES]))=True));



j'ai compris non .?:))
Merci encore



"Thierry (ze Titi)" message de news:
Sur ce point, d'accord. Mais dans ce cas, c'est ta requête qu'il faut que
tu revoies puisque tu fais appel à tes deux listes...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une
liste & non plusiseurs non ?

Marc
"Thierry (ze Titi)" message de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut ne
rien y avoir de sélectionné dans l'une des listes, voire les deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info






Thierry (ze Titi)
Le #6387421
Eh non, c'est plus compliqué que ça.

A la limite, si tu laisses le Or dans ta fonction, il faut inclure dans
CompareList que ta liste peut ne pas être remplie, ça doit donner

Public Function CompareList(ParameterValue As Variant) As Boolean
If Ctl.ItemsSelected.Count=0 Then
CompareListúlse
Exit Function
End If
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

Bien sûr, le changement est à répercuter dans toutes les fonctions
CompareList...
A tester, je ne suis pas absolument certain de mon coup...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Donc je mets le and ici : If (Not PrepareList(Me.Name, Me.Liste1.Name)) And
(Not PrepareList1(Me.Name, Me.Liste2.Name)) Then

et mets un or dans ma requete :
SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) or ((CompareList1([AXES]))=True));



j'ai compris non .?:))
Merci encore



"Thierry (ze Titi)" de news:
Sur ce point, d'accord. Mais dans ce cas, c'est ta requête qu'il faut que
tu revoies puisque tu fais appel à tes deux listes...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer les
faits suivants:
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une
liste & non plusiseurs non ?

Marc
"Thierry (ze Titi)" message de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut ne
rien y avoir de sélectionné dans l'une des listes, voire les deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info




Marc
Le #6387391
pffff moi qui pensais faire un truc tout "bête" avec 6 zones de liste je
selectionne mes criteres & hopp le résultat s'affiche !!!!:))

merci encore

"Thierry (ze Titi)" message de news:
Eh non, c'est plus compliqué que ça.

A la limite, si tu laisses le Or dans ta fonction, il faut inclure dans
CompareList que ta liste peut ne pas être remplie, ça doit donner

Public Function CompareList(ParameterValue As Variant) As Boolean
If Ctl.ItemsSelected.Count=0 Then
CompareListúlse
Exit Function
End If
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

Bien sûr, le changement est à répercuter dans toutes les fonctions
CompareList...
A tester, je ne suis pas absolument certain de mon coup...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Donc je mets le and ici : If (Not PrepareList(Me.Name, Me.Liste1.Name))
And (Not PrepareList1(Me.Name, Me.Liste2.Name)) Then

et mets un or dans ma requete :
SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) or ((CompareList1([AXES]))=True));



j'ai compris non .?:))
Merci encore



"Thierry (ze Titi)" message de news:
Sur ce point, d'accord. Mais dans ce cas, c'est ta requête qu'il faut
que tu revoies puisque tu fais appel à tes deux listes...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une
liste & non plusiseurs non ?

Marc
"Thierry (ze Titi)" message de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut
ne rien y avoir de sélectionné dans l'une des listes, voire les
deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info








Marc
Le #6329491
ça parait simple en image :)

http://www.cijoint.fr/cij41633208128346.jpg

Marc
"Marc" 470e2e51$0$24295$
pffff moi qui pensais faire un truc tout "bête" avec 6 zones de liste je
selectionne mes criteres & hopp le résultat s'affiche !!!!:))

merci encore

"Thierry (ze Titi)" message de news:
Eh non, c'est plus compliqué que ça.

A la limite, si tu laisses le Or dans ta fonction, il faut inclure dans
CompareList que ta liste peut ne pas être remplie, ça doit donner

Public Function CompareList(ParameterValue As Variant) As Boolean
If Ctl.ItemsSelected.Count=0 Then
CompareListúlse
Exit Function
End If
For Each varItm In Ctl.ItemsSelected
If CStr(ParameterValue) = Ctl.ItemData(varItm) Then
CompareList = True
Exit Function
End If
Next varItm
CompareList = False
End Function

Bien sûr, le changement est à répercuter dans toutes les fonctions
CompareList...
A tester, je ne suis pas absolument certain de mon coup...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Donc je mets le and ici : If (Not PrepareList(Me.Name, Me.Liste1.Name))
And (Not PrepareList1(Me.Name, Me.Liste2.Name)) Then

et mets un or dans ma requete :
SELECT RESULTAT PAR AXES.* FROM [RESULTAT PAR AXES] WHERE
(((CompareList([Rubrique]))=True) or ((CompareList1([AXES]))=True));



j'ai compris non .?:))
Merci encore



"Thierry (ze Titi)" message de news:
Sur ce point, d'accord. Mais dans ce cas, c'est ta requête qu'il faut
que tu revoies puisque tu fais appel à tes deux listes...

Dans ton message 11/10/2007 jour de Saint Firmin, tu as pris l'initiative de nous narrer
les faits suivants:
Merci Thierry

j'essaye mais le or me permettais justement de ne selectionner qu'une
liste & non plusiseurs non ?

Marc
"Thierry (ze Titi)" message de news:
.../...
Oublie le post précédent, j'ai trouvé sur le site de Raymond.

Le problème doit venir du fait que tu lances le code alors qu'il peut
ne rien y avoir de sélectionné dans l'une des listes, voire les
deux...
En fait, tu dois remplacer le Or par un And avant le lancement de la
requête:

If (Not PrepareList(Me.Name, Me.Liste1.Name)) And (Not
PrepareList1(Me.Name, Me.Liste2.Name)) Then
MsgBox "impossible de lancer la requête"
Else
Me.DONNEES.Requery
End If

-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





-- Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info





--
Cordialement,
Thierry

Tout pour réussir avec Access :
http://www.mpfa.info












Publicité
Poster une réponse
Anonyme