CA MARCHE tout impec, dans tous les cas !!!!
Merci beaucoup Jessy et je te dirais bien à charge de revanche mais je ne
vois pas très bien ce que je pourrais t'apporter.
Cette fois c'est promis, je
ne t'embête plus sur ce sujet. Et encore bravo.
Re,
Y'a des fois je me dis... que je suis con ??? ;-)
C'est normal, remplaces la ligne :
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
par la ligne
str1 = Forms![ETIQUETTES ORGANISME]![Département]
et remplaces la ligne :
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
par la ligne :
str2 = Forms![ETIQUETTES ORGANISME]![Type organisme]
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message de
news:Désolé Jessy, je sais que tu as déjà passé pas mal de temps là dessus
et
jet'en suis très reconnaissant, mais ça ne marche pas : Y a pas de
message
d'erreur mais quand j'exécute le code puis que j'ouvre la requête en
mode
création, voilà ce que je trouve dans mon critère1 :
'Forms![ETIQUETTES'
Ou'ORGANISME]![Département]' et en critère2 j'ai : [Forms]![ETIQUETTES
ORGANISME]![Type organisme]. Du coup le requête ne donne rien en
résultat.
Merci et encore désolé de monopoliser ton attentionRe,
Bon je ne suis pas tétu mais...
J'ai adapté ton code à tes besoins, si il plante, je veux bien
que tu me dises le message d'erreur parceque normalement
il devrait fonctionner sans problème
Quelques explications :
strSQL correspond à ton sql s'il n'y a aucun critères.
strFld1 correspond au premier champ de ta requête auquel tu veux
appliquer un critère
str1 correspond au critère du premier champ
tabX Split(str1, " ") te permet de stocker dans un tableau chaque
éléments de str1 qui sont séparé par un espace.
For ... Next permet de créer le premier critère s'il y en a un.
Les explications sont les même pour strFld2, str2 et tabX
sauf que pour le deuxième critère, le séparateur est le + à la place
de l'espace.
Pour finir le dernier algorythme (si alors...) permet de construire
le
critère globale en testant si il y a critère1 et/ou un critère 2
Enfin bon, voici le code complet :
*********************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim str1 As String, str2 As String
Dim tabX
Dim intTab As Integer
Dim strFld As String, strFld2 As String
Dim strCritere As String
Dim strCritere1 As String
Dim strCritere2 As String
strSQL = "SELECT ORGANISME.[Nom organisme], " _
& "[Formulaires]![ETIQUETTES ORGANISME]![Destinataire] AS
Nompersonne, "_
& "ORGANISME.[Adresse 1], ORGANISME.[Adresse 2], " _
& "ORGANISME.[Code postal], ORGANISME.Commune, " _
& "IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-] " _
& "FROM ORGANISME"
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strFld1 = "Left([Code postal],2)="
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(str1) Or str1 = "" Then
strCritere1 = ""
Else
tabX = Split(str1, " ")
For intTab = 0 To UBound(tabX)
If strCritere1 = "" Then
strCritere1 = strFld1 & "'" & tabX(intTab) & "'"
Else
strCritere1 = strCritere1 & " OR " & strFld1 & "'" &
tabX(intTab) & "'"
End If
Next
End If
strFld2 = "[Type organisme]="
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
If IsNull(str2) Or str2 = "" Then
strCritere2 = ""
Else
tabX = Split(str2, "+")
For intTab = 0 To UBound(tabX)
If strCritere2 = "" Then
strCritere2 = strFld2 & tabX(intTab)
Else
strCritere2 = strCritere2 & " OR " & strFld2 &
tabX(intTab)
End If
Next
End If
If strCritere1 = "" Then
If strCritere2 = "" Then
strCritere = ";"
Else
strCritere = " WHERE (" & strCritere2 & ");"
End If
Else
If strCritere2 = "" Then
strCritere = " WHERE (" & strCritere1 & ");"
Else
strCritere = " WHERE (" & strCritere1 & ") AND (" &
strCritere2
&");"
End If
End If
strSQL = strSQL & strCritere
qdf.SQL = strSQL
*********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message de
news:Bonjour Jessy,
Merci encore de t'intéresser à mon cas. J'ai bien essayé
d'utiliser le
codeque tu m'as fourni pour répondre à mon problème mais ça ne me
donne
pas ceque je veux et j'avoue que je n'y connais rien en visual Basic. Du
coup jen'arrive pas à voir où ça cloche. Apparemment il y a une confusion
entrelechamp pour lequel je veux fixer le critère dans ma requete et le
contrôledemon formulaire qui me sert à fixer ce critère. J'ai donc essayé
avec
lecodeque m'a indiqué "crinblanc", en l'adaptant un peu pour essayer de
faire ceque je voulais. Ca marche presque mais j'ai toujours un hic
lorsque je
nesaisis rien dans le contrôle de mon formulaire. Il donne alors la
valeur''au critère de ma requête. De plus les choses se sont un peu
compliquéescarj'ai maintenant 2 contrôles dans mon formulaires qui me servent à
fixer 2critères de ma requête. Je sais que tu n'es pas l'auteur du code
d'originemais peut être pourras-tu m'aider à corriger ce qui ne va pas, car
ça
n'apasl'air d'être grand chose (mais ce n'est qu'une impression). En
résumé
j'aimes deux contrôles du formulaire [ETIQUETTES ORGANISMES]
([Département] et[Type organisme] ) qui me servent à fixer les critères des champs
Left([Codepostal], 2) et [Type organisme] de ma requête. La saisie est
obligatoiredansle premier contrôle mais pas dans le deuxième.
Voici le code que j'ai utilisé et qui ne marche pas lorsque je ne
saisierien dans le deuxième contrôle. Par contre dans les autres cas ça
marchebien:Dim qdf As QueryDef
Dim criteres As String
Dim criteres2 As String
Dim strSQL As String
Set qdf = CurrentDb.QueryDefs("[ADRESSE organisme au choix]")
If IsNull(Forms![ETIQUETTES ORGANISME]![Département]) Then
criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type organisme],
"+", "OR[Type organisme]=")strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
[Type
organisme]=" & criteres2Else
criteres = "'" & Replace(Forms![ETIQUETTES
ORGANISME]![Département],
" ","' OR Left([Code postal],2) = '") & "'"criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type
organisme],
"+", "OR [Type organisme]=")strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
(Left([Codepostal], 2) =" & criteres & ")" & "AND ([Type organisme]=" &
criteres2 &
")"End If
qdf.SQL = strSQL
Merci de ton aide.
BubuBonjour
Essais le code complet suivante :
******************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim strX As String
Dim tabX
Dim intTab As Integer
Dim strFld As String
Dim strCritere As String
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strSQL = "SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1], "
_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME"
strFld = "ORGANISME.[N° de département]="
strX = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(strX) Or strX = "" Then
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME;"
Else
tabX = Split(strX, " ")
For intTab = 0 To UBound(tabX)
If strCritere = "" Then
strCritere = strFld & "'" & tabX(intTab) & "'"
Else
strCritere = strCritere & " OR " & strFld & "'" &
tabX(intTab) &"'"
End If
Next
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] " _
& "FROM ORGANISME WHERE " & strCritere & ";"
End If
qdf.SQL
******************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message
de
news:Désolé c'est encore moi : comment faire pour le code
fonctionne
lorsqu'iln'yrien de saisi dans le contrôle [Département] de mon
formulaire.
Cadquelesutilisateurs aient le choix de préciser ou pas le n° de
CA MARCHE tout impec, dans tous les cas !!!!
Merci beaucoup Jessy et je te dirais bien à charge de revanche mais je ne
vois pas très bien ce que je pourrais t'apporter.
Cette fois c'est promis, je
ne t'embête plus sur ce sujet. Et encore bravo.
Re,
Y'a des fois je me dis... que je suis con ??? ;-)
C'est normal, remplaces la ligne :
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
par la ligne
str1 = Forms![ETIQUETTES ORGANISME]![Département]
et remplaces la ligne :
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
par la ligne :
str2 = Forms![ETIQUETTES ORGANISME]![Type organisme]
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" <Bubu@discussions.microsoft.com> a écrit dans le message de
news:EFFBCB0D-C657-4139-98E3-022FC216F79A@microsoft.com...
Désolé Jessy, je sais que tu as déjà passé pas mal de temps là dessus
et
je
t'en suis très reconnaissant, mais ça ne marche pas : Y a pas de
message
d'erreur mais quand j'exécute le code puis que j'ouvre la requête en
mode
création, voilà ce que je trouve dans mon critère1 :
'Forms![ETIQUETTES'
Ou
'ORGANISME]![Département]' et en critère2 j'ai : [Forms]![ETIQUETTES
ORGANISME]![Type organisme]. Du coup le requête ne donne rien en
résultat.
Merci et encore désolé de monopoliser ton attention
Re,
Bon je ne suis pas tétu mais...
J'ai adapté ton code à tes besoins, si il plante, je veux bien
que tu me dises le message d'erreur parceque normalement
il devrait fonctionner sans problème
Quelques explications :
strSQL correspond à ton sql s'il n'y a aucun critères.
strFld1 correspond au premier champ de ta requête auquel tu veux
appliquer un critère
str1 correspond au critère du premier champ
tabX Split(str1, " ") te permet de stocker dans un tableau chaque
éléments de str1 qui sont séparé par un espace.
For ... Next permet de créer le premier critère s'il y en a un.
Les explications sont les même pour strFld2, str2 et tabX
sauf que pour le deuxième critère, le séparateur est le + à la place
de l'espace.
Pour finir le dernier algorythme (si alors...) permet de construire
le
critère globale en testant si il y a critère1 et/ou un critère 2
Enfin bon, voici le code complet :
*********************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim str1 As String, str2 As String
Dim tabX
Dim intTab As Integer
Dim strFld As String, strFld2 As String
Dim strCritere As String
Dim strCritere1 As String
Dim strCritere2 As String
strSQL = "SELECT ORGANISME.[Nom organisme], " _
& "[Formulaires]![ETIQUETTES ORGANISME]![Destinataire] AS
Nompersonne, "
_
& "ORGANISME.[Adresse 1], ORGANISME.[Adresse 2], " _
& "ORGANISME.[Code postal], ORGANISME.Commune, " _
& "IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-] " _
& "FROM ORGANISME"
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strFld1 = "Left([Code postal],2)="
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(str1) Or str1 = "" Then
strCritere1 = ""
Else
tabX = Split(str1, " ")
For intTab = 0 To UBound(tabX)
If strCritere1 = "" Then
strCritere1 = strFld1 & "'" & tabX(intTab) & "'"
Else
strCritere1 = strCritere1 & " OR " & strFld1 & "'" &
tabX(intTab) & "'"
End If
Next
End If
strFld2 = "[Type organisme]="
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
If IsNull(str2) Or str2 = "" Then
strCritere2 = ""
Else
tabX = Split(str2, "+")
For intTab = 0 To UBound(tabX)
If strCritere2 = "" Then
strCritere2 = strFld2 & tabX(intTab)
Else
strCritere2 = strCritere2 & " OR " & strFld2 &
tabX(intTab)
End If
Next
End If
If strCritere1 = "" Then
If strCritere2 = "" Then
strCritere = ";"
Else
strCritere = " WHERE (" & strCritere2 & ");"
End If
Else
If strCritere2 = "" Then
strCritere = " WHERE (" & strCritere1 & ");"
Else
strCritere = " WHERE (" & strCritere1 & ") AND (" &
strCritere2
&
");"
End If
End If
strSQL = strSQL & strCritere
qdf.SQL = strSQL
*********************************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" <Bubu@discussions.microsoft.com> a écrit dans le message de
news:0D92A730-4068-491F-BB79-25D47BDEEB7A@microsoft.com...
Bonjour Jessy,
Merci encore de t'intéresser à mon cas. J'ai bien essayé
d'utiliser le
code
que tu m'as fourni pour répondre à mon problème mais ça ne me
donne
pas ce
que je veux et j'avoue que je n'y connais rien en visual Basic. Du
coup je
n'arrive pas à voir où ça cloche. Apparemment il y a une confusion
entre
le
champ pour lequel je veux fixer le critère dans ma requete et le
contrôle
de
mon formulaire qui me sert à fixer ce critère. J'ai donc essayé
avec
le
code
que m'a indiqué "crinblanc", en l'adaptant un peu pour essayer de
faire ce
que je voulais. Ca marche presque mais j'ai toujours un hic
lorsque je
ne
saisis rien dans le contrôle de mon formulaire. Il donne alors la
valeur
''
au critère de ma requête. De plus les choses se sont un peu
compliquées
car
j'ai maintenant 2 contrôles dans mon formulaires qui me servent à
fixer 2
critères de ma requête. Je sais que tu n'es pas l'auteur du code
d'origine
mais peut être pourras-tu m'aider à corriger ce qui ne va pas, car
ça
n'a
pas
l'air d'être grand chose (mais ce n'est qu'une impression). En
résumé
j'ai
mes deux contrôles du formulaire [ETIQUETTES ORGANISMES]
([Département] et
[Type organisme] ) qui me servent à fixer les critères des champs
Left([Code
postal], 2) et [Type organisme] de ma requête. La saisie est
obligatoire
dans
le premier contrôle mais pas dans le deuxième.
Voici le code que j'ai utilisé et qui ne marche pas lorsque je ne
saisie
rien dans le deuxième contrôle. Par contre dans les autres cas ça
marche
bien
:
Dim qdf As QueryDef
Dim criteres As String
Dim criteres2 As String
Dim strSQL As String
Set qdf = CurrentDb.QueryDefs("[ADRESSE organisme au choix]")
If IsNull(Forms![ETIQUETTES ORGANISME]![Département]) Then
criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type organisme],
"+", "
OR
[Type organisme]=")
strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
[Type
organisme]=" & criteres2
Else
criteres = "'" & Replace(Forms![ETIQUETTES
ORGANISME]![Département],
" ",
"' OR Left([Code postal],2) = '") & "'"
criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type
organisme],
"+", "
OR [Type organisme]=")
strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
(Left([Code
postal], 2) =" & criteres & ")" & "AND ([Type organisme]=" &
criteres2 &
")"
End If
qdf.SQL = strSQL
Merci de ton aide.
Bubu
Bonjour
Essais le code complet suivante :
******************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim strX As String
Dim tabX
Dim intTab As Integer
Dim strFld As String
Dim strCritere As String
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strSQL = "SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1], "
_
& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME"
strFld = "ORGANISME.[N° de département]="
strX = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(strX) Or strX = "" Then
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "
_
& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME;"
Else
tabX = Split(strX, " ")
For intTab = 0 To UBound(tabX)
If strCritere = "" Then
strCritere = strFld & "'" & tabX(intTab) & "'"
Else
strCritere = strCritere & " OR " & strFld & "'" &
tabX(intTab) &
"'"
End If
Next
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "
_
& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] " _
& "FROM ORGANISME WHERE " & strCritere & ";"
End If
qdf.SQL
******************************************************
--
@+
Jessy Sempere - Access MVP
news@access.fr.vu
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" <Bubu@discussions.microsoft.com> a écrit dans le message
de
news:1F178FCE-BD6B-42D0-8260-D74E0DA31BFA@microsoft.com...
Désolé c'est encore moi : comment faire pour le code
fonctionne
lorsqu'il
n'y
rien de saisi dans le contrôle [Département] de mon
formulaire.
Cad
que
les
utilisateurs aient le choix de préciser ou pas le n° de
CA MARCHE tout impec, dans tous les cas !!!!
Merci beaucoup Jessy et je te dirais bien à charge de revanche mais je ne
vois pas très bien ce que je pourrais t'apporter.
Cette fois c'est promis, je
ne t'embête plus sur ce sujet. Et encore bravo.
Re,
Y'a des fois je me dis... que je suis con ??? ;-)
C'est normal, remplaces la ligne :
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
par la ligne
str1 = Forms![ETIQUETTES ORGANISME]![Département]
et remplaces la ligne :
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
par la ligne :
str2 = Forms![ETIQUETTES ORGANISME]![Type organisme]
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message de
news:Désolé Jessy, je sais que tu as déjà passé pas mal de temps là dessus
et
jet'en suis très reconnaissant, mais ça ne marche pas : Y a pas de
message
d'erreur mais quand j'exécute le code puis que j'ouvre la requête en
mode
création, voilà ce que je trouve dans mon critère1 :
'Forms![ETIQUETTES'
Ou'ORGANISME]![Département]' et en critère2 j'ai : [Forms]![ETIQUETTES
ORGANISME]![Type organisme]. Du coup le requête ne donne rien en
résultat.
Merci et encore désolé de monopoliser ton attentionRe,
Bon je ne suis pas tétu mais...
J'ai adapté ton code à tes besoins, si il plante, je veux bien
que tu me dises le message d'erreur parceque normalement
il devrait fonctionner sans problème
Quelques explications :
strSQL correspond à ton sql s'il n'y a aucun critères.
strFld1 correspond au premier champ de ta requête auquel tu veux
appliquer un critère
str1 correspond au critère du premier champ
tabX Split(str1, " ") te permet de stocker dans un tableau chaque
éléments de str1 qui sont séparé par un espace.
For ... Next permet de créer le premier critère s'il y en a un.
Les explications sont les même pour strFld2, str2 et tabX
sauf que pour le deuxième critère, le séparateur est le + à la place
de l'espace.
Pour finir le dernier algorythme (si alors...) permet de construire
le
critère globale en testant si il y a critère1 et/ou un critère 2
Enfin bon, voici le code complet :
*********************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim str1 As String, str2 As String
Dim tabX
Dim intTab As Integer
Dim strFld As String, strFld2 As String
Dim strCritere As String
Dim strCritere1 As String
Dim strCritere2 As String
strSQL = "SELECT ORGANISME.[Nom organisme], " _
& "[Formulaires]![ETIQUETTES ORGANISME]![Destinataire] AS
Nompersonne, "_
& "ORGANISME.[Adresse 1], ORGANISME.[Adresse 2], " _
& "ORGANISME.[Code postal], ORGANISME.Commune, " _
& "IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-] " _
& "FROM ORGANISME"
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strFld1 = "Left([Code postal],2)="
str1 = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(str1) Or str1 = "" Then
strCritere1 = ""
Else
tabX = Split(str1, " ")
For intTab = 0 To UBound(tabX)
If strCritere1 = "" Then
strCritere1 = strFld1 & "'" & tabX(intTab) & "'"
Else
strCritere1 = strCritere1 & " OR " & strFld1 & "'" &
tabX(intTab) & "'"
End If
Next
End If
strFld2 = "[Type organisme]="
str2 = "Forms![ETIQUETTES ORGANISME]![Type organisme]"
If IsNull(str2) Or str2 = "" Then
strCritere2 = ""
Else
tabX = Split(str2, "+")
For intTab = 0 To UBound(tabX)
If strCritere2 = "" Then
strCritere2 = strFld2 & tabX(intTab)
Else
strCritere2 = strCritere2 & " OR " & strFld2 &
tabX(intTab)
End If
Next
End If
If strCritere1 = "" Then
If strCritere2 = "" Then
strCritere = ";"
Else
strCritere = " WHERE (" & strCritere2 & ");"
End If
Else
If strCritere2 = "" Then
strCritere = " WHERE (" & strCritere1 & ");"
Else
strCritere = " WHERE (" & strCritere1 & ") AND (" &
strCritere2
&");"
End If
End If
strSQL = strSQL & strCritere
qdf.SQL = strSQL
*********************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message de
news:Bonjour Jessy,
Merci encore de t'intéresser à mon cas. J'ai bien essayé
d'utiliser le
codeque tu m'as fourni pour répondre à mon problème mais ça ne me
donne
pas ceque je veux et j'avoue que je n'y connais rien en visual Basic. Du
coup jen'arrive pas à voir où ça cloche. Apparemment il y a une confusion
entrelechamp pour lequel je veux fixer le critère dans ma requete et le
contrôledemon formulaire qui me sert à fixer ce critère. J'ai donc essayé
avec
lecodeque m'a indiqué "crinblanc", en l'adaptant un peu pour essayer de
faire ceque je voulais. Ca marche presque mais j'ai toujours un hic
lorsque je
nesaisis rien dans le contrôle de mon formulaire. Il donne alors la
valeur''au critère de ma requête. De plus les choses se sont un peu
compliquéescarj'ai maintenant 2 contrôles dans mon formulaires qui me servent à
fixer 2critères de ma requête. Je sais que tu n'es pas l'auteur du code
d'originemais peut être pourras-tu m'aider à corriger ce qui ne va pas, car
ça
n'apasl'air d'être grand chose (mais ce n'est qu'une impression). En
résumé
j'aimes deux contrôles du formulaire [ETIQUETTES ORGANISMES]
([Département] et[Type organisme] ) qui me servent à fixer les critères des champs
Left([Codepostal], 2) et [Type organisme] de ma requête. La saisie est
obligatoiredansle premier contrôle mais pas dans le deuxième.
Voici le code que j'ai utilisé et qui ne marche pas lorsque je ne
saisierien dans le deuxième contrôle. Par contre dans les autres cas ça
marchebien:Dim qdf As QueryDef
Dim criteres As String
Dim criteres2 As String
Dim strSQL As String
Set qdf = CurrentDb.QueryDefs("[ADRESSE organisme au choix]")
If IsNull(Forms![ETIQUETTES ORGANISME]![Département]) Then
criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type organisme],
"+", "OR[Type organisme]=")strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
[Type
organisme]=" & criteres2Else
criteres = "'" & Replace(Forms![ETIQUETTES
ORGANISME]![Département],
" ","' OR Left([Code postal],2) = '") & "'"criteres2 = Replace(Forms![ETIQUETTES ORGANISME]![Type
organisme],
"+", "OR [Type organisme]=")strSQL = "SELECT ORGANISME.[Nom organisme],
[Formulaires]![ETIQUETTES
ORGANISME]![Destinataire] AS Nompersonne, ORGANISME.[Adresse 1],
ORGANISME.[Adresse 2], ORGANISME.[Code postal], ORGANISME.Commune,
IIf([Pays]='FRANCE',Null,[Pays]) AS [Pays-]FROM ORGANISME WHERE
(Left([Codepostal], 2) =" & criteres & ")" & "AND ([Type organisme]=" &
criteres2 &
")"End If
qdf.SQL = strSQL
Merci de ton aide.
BubuBonjour
Essais le code complet suivante :
******************************************************
Dim qdf As DAO.QueryDef
Dim strSQL As String
Dim strX As String
Dim tabX
Dim intTab As Integer
Dim strFld As String
Dim strCritere As String
Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
strSQL = "SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1], "
_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME"
strFld = "ORGANISME.[N° de département]="
strX = "Forms![ETIQUETTES ORGANISME]![Département]"
If IsNull(strX) Or strX = "" Then
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] FROM ORGANISME;"
Else
tabX = Split(strX, " ")
For intTab = 0 To UBound(tabX)
If strCritere = "" Then
strCritere = strFld & "'" & tabX(intTab) & "'"
Else
strCritere = strCritere & " OR " & strFld & "'" &
tabX(intTab) &"'"
End If
Next
strSQL = "SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse
1], "_& "ORGANISME.Commune, " _
& "ORGANISME.[N° de département] " _
& "FROM ORGANISME WHERE " & strCritere & ";"
End If
qdf.SQL
******************************************************
--
@+
Jessy Sempere - Access MVP
------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Bubu" a écrit dans le message
de
news:Désolé c'est encore moi : comment faire pour le code
fonctionne
lorsqu'iln'yrien de saisi dans le contrôle [Département] de mon
formulaire.
Cadquelesutilisateurs aient le choix de préciser ou pas le n° de