OVH Cloud OVH Cloud

Controle pour critere

21 réponses
Avatar
Bubu
Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour specifier un critere
dans une requete. Jusque la rien de complique mais ma difficulte c'est que je
souhaiterais que ce seul controle me permette de specifier un ou plusieurs
criteres pour un meme champ. Par exemple, lorsque je souhaite que ma requete
affiche les clients du departement 86, il me suffit de taper 86 dans le
controle utilise comme critere du champ departement et cela marche tres bien.
Par contre si je veux que ma requete affiche les clients des departements 86
ou 79, j'ai beau saisir 86 Ou 79 dans mon controle, cela ne marche pas. J'ai
essaye plusieurs syntaxes dans mon controle avec Comme, Dans... mais ça ne
marche pas.
Pouvez-vous m'aider ? Par avance merci.

10 réponses

1 2 3
Avatar
Bubu
Merci beaucoup crinblanc, ça marche "nickel chrome" !

Pour la proposition de Jessy, je n'ai pas encore essayé mais je le ferai dès
que j'aurai un peu de temps et vous tiendrai au courant.
Merci à toi également Jessy.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", "'
OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme critère
de ma requete les valeurs entrées dans mon controle de formulaire mais y a
encore un petit bemol : mon champ [N° de departement] est un champ texte.
J'ai donc un message d'erreur lorsque je saisis mes numéros de département
sans guillement. Suis-je condamné à saisir avec des guillemets dans mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les guillemets ?

Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", " OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou DAO...


"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça dépasse
largement mes faibles compétences. J'ai essayé ton code associé à un bouton
recherche mais j'obtiens le message d'erreur suivant : Erreur de compilation
: Type défini par l'utilisateur non défini. Ce qui semble poser problème,
c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde l'aide
associée à ce message d'erreur, j'avoue que je ne comprends pas grand chose,
compte tenu de mes faibles compétences en développement-programmation.
Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce code sur le
"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N° de
département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1], ORGANISME.Commune,
ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de département])=[Formulaires]![ETIQUETTES
ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de département dans le
contrôle [Département] de mon formulaire, afin que la requete m'affiche les
organismes de plusieurs départements. Désolé si je ne suis pas très clair et
merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement et dans cette
requete, dans la zone critere j'ai mis la référence du controle de mon
formulaire. Est-ce plus claire comme ça ? Merci de ton aide.


Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de formualire?



Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour specifier un critere
dans une requete. Jusque la rien de complique mais ma difficulte c'est que je
souhaiterais que ce seul controle me permette de specifier un ou plusieurs
criteres pour un meme champ. Par exemple, lorsque je souhaite que ma requete
affiche les clients du departement 86, il me suffit de taper 86 dans le
controle utilise comme critere du champ departement et cela marche tres bien.
Par contre si je veux que ma requete affiche les clients des departements 86
ou 79, j'ai beau saisir 86 Ou 79 dans mon controle, cela ne marche pas. J'ai
essaye plusieurs syntaxes dans mon controle avec Comme, Dans... mais ça ne
marche pas.
Pouvez-vous m'aider ? Par avance merci.




















Avatar
Bubu
Merci de ton aide Jessy. J'ai essayé ton code mais je ne dois pas l'avoir
utilisé correctement (Je ne maitrise ni le visual basic ni le sql) car ça ne
donne pas le résultat escompté. Celui de crinblanc marche très bien donc je
pense que je vais en rester là.
Enore merci
Bubu


Bonjour

Perso je ferais comme ça pour définir ta variable "Critere" :

Dim strX As String
Dim tabX
Dim intTab As Integer
Dim strFld As String
Dim strCritere As String

strFld = "ORGANISME.[N° de département]="
strX = "Forms![ETIQUETTES ORGANISME]![Département]"
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

@+
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 news:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme
critère

de ma requete les valeurs entrées dans mon controle de formulaire mais y a
encore un petit bemol : mon champ [N° de departement] est un champ texte.
J'ai donc un message d'erreur lorsque je saisis mes numéros de département
sans guillement. Suis-je condamné à saisir avec des guillemets dans mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les guillemets
?


Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", " OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou DAO...


"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça
dépasse



largement mes faibles compétences. J'ai essayé ton code associé à un
bouton



recherche mais j'obtiens le message d'erreur suivant : Erreur de
compilation



: Type défini par l'utilisateur non défini. Ce qui semble poser
problème,



c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde
l'aide



associée à ce message d'erreur, j'avoue que je ne comprends pas grand
chose,



compte tenu de mes faibles compétences en développement-programmation.
Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce code
sur le




"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " "
," OR




Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N° de
département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,





ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de département])=[Formulaires]![ETIQUETTES
ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de
département dans le





contrôle [Département] de mon formulaire, afin que la requete
m'affiche les





organismes de plusieurs départements. Désolé si je ne suis pas
très clair et





merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement et
dans cette







requete, dans la zone critere j'ai mis la référence du
controle de mon







formulaire. Est-ce plus claire comme ça ? Merci de ton aide.


Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de
formualire?











Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour
specifier un critere









dans une requete. Jusque la rien de complique mais ma
difficulte c'est que je









souhaiterais que ce seul controle me permette de specifier
un ou plusieurs









criteres pour un meme champ. Par exemple, lorsque je
souhaite que ma requete









affiche les clients du departement 86, il me suffit de
taper 86 dans le









controle utilise comme critere du champ departement et
cela marche tres bien.









Par contre si je veux que ma requete affiche les clients
des departements 86









ou 79, j'ai beau saisir 86 Ou 79 dans mon controle, cela
ne marche pas. J'ai









essaye plusieurs syntaxes dans mon controle avec Comme,
Dans... mais ça ne









marche pas.
Pouvez-vous m'aider ? Par avance merci.























Avatar
Jessy Sempere [MVP]
Ok pas de soucis

En fait, il fallait aussi remplacer la ligne par :
qdf.SQL="SELECT ORGANISME.[Nom organisme], " _
& "ORGANISME.[Adresse 1], ORGANISME.Commune, " _
& "ORGANISME.[N° de département] " _
& "FROM ORGANISME WHERE " & strCritere

Le strCritere que je faisais te donnait l'intégralité de la clause Where

@+
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:

Merci de ton aide Jessy. J'ai essayé ton code mais je ne dois pas l'avoir
utilisé correctement (Je ne maitrise ni le visual basic ni le sql) car ça
ne

donne pas le résultat escompté. Celui de crinblanc marche très bien donc
je

pense que je vais en rester là.
Enore merci
Bubu


Bonjour

Perso je ferais comme ça pour définir ta variable "Critere" :

Dim strX As String
Dim tabX
Dim intTab As Integer
Dim strFld As String
Dim strCritere As String

strFld = "ORGANISME.[N° de département]="
strX = "Forms![ETIQUETTES ORGANISME]![Département]"
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

@+
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 news:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme
critère

de ma requete les valeurs entrées dans mon controle de formulaire mais
y a



encore un petit bemol : mon champ [N° de departement] est un champ
texte.



J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets dans
mon



formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets



?

Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ,"
OR



Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", "
OR



ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou
DAO...






"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça
dépasse



largement mes faibles compétences. J'ai essayé ton code associé à
un





bouton
recherche mais j'obtiens le message d'erreur suivant : Erreur de
compilation



: Type défini par l'utilisateur non défini. Ce qui semble poser
problème,



c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde
l'aide



associée à ce message d'erreur, j'avoue que je ne comprends pas
grand





chose,
compte tenu de mes faibles compétences en
développement-programmation.





Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce
code






sur le
"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], "
"






," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1],






ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N°
de






département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,





ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de
département])=[Formulaires]![ETIQUETTES







ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de
département dans le





contrôle [Département] de mon formulaire, afin que la requete
m'affiche les





organismes de plusieurs départements. Désolé si je ne suis pas
très clair et





merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement
et









dans cette
requete, dans la zone critere j'ai mis la référence du
controle de mon







formulaire. Est-ce plus claire comme ça ? Merci de ton
aide.











Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de
formualire?











Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour
specifier un critere









dans une requete. Jusque la rien de complique mais ma
difficulte c'est que je









souhaiterais que ce seul controle me permette de
specifier











un ou plusieurs
criteres pour un meme champ. Par exemple, lorsque je
souhaite que ma requete









affiche les clients du departement 86, il me suffit de
taper 86 dans le









controle utilise comme critere du champ departement et
cela marche tres bien.









Par contre si je veux que ma requete affiche les
clients











des departements 86
ou 79, j'ai beau saisir 86 Ou 79 dans mon controle,
cela











ne marche pas. J'ai
essaye plusieurs syntaxes dans mon controle avec
Comme,











Dans... mais ça ne
marche pas.
Pouvez-vous m'aider ? Par avance merci.

























Avatar
Bubu
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 département.
Parcequ'en l'état actuel des choses j'ai un message d'erreur du type
utilisation incorrect de Null lorsque je ne saisie rien dans mon contrôle.
Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", "'
OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme critère
de ma requete les valeurs entrées dans mon controle de formulaire mais y a
encore un petit bemol : mon champ [N° de departement] est un champ texte.
J'ai donc un message d'erreur lorsque je saisis mes numéros de département
sans guillement. Suis-je condamné à saisir avec des guillemets dans mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les guillemets ?

Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", " OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou DAO...


"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça dépasse
largement mes faibles compétences. J'ai essayé ton code associé à un bouton
recherche mais j'obtiens le message d'erreur suivant : Erreur de compilation
: Type défini par l'utilisateur non défini. Ce qui semble poser problème,
c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde l'aide
associée à ce message d'erreur, j'avoue que je ne comprends pas grand chose,
compte tenu de mes faibles compétences en développement-programmation.
Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce code sur le
"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N° de
département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1], ORGANISME.Commune,
ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de département])=[Formulaires]![ETIQUETTES
ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de département dans le
contrôle [Département] de mon formulaire, afin que la requete m'affiche les
organismes de plusieurs départements. Désolé si je ne suis pas très clair et
merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement et dans cette
requete, dans la zone critere j'ai mis la référence du controle de mon
formulaire. Est-ce plus claire comme ça ? Merci de ton aide.


Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de formualire?



Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour specifier un critere
dans une requete. Jusque la rien de complique mais ma difficulte c'est que je
souhaiterais que ce seul controle me permette de specifier un ou plusieurs
criteres pour un meme champ. Par exemple, lorsque je souhaite que ma requete
affiche les clients du departement 86, il me suffit de taper 86 dans le
controle utilise comme critere du champ departement et cela marche tres bien.
Par contre si je veux que ma requete affiche les clients des departements 86
ou 79, j'ai beau saisir 86 Ou 79 dans mon controle, cela ne marche pas. J'ai
essaye plusieurs syntaxes dans mon controle avec Comme, Dans... mais ça ne
marche pas.
Pouvez-vous m'aider ? Par avance merci.




















Avatar
Jessy Sempere [MVP]
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

------------------------------------
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'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 département.
Parcequ'en l'état actuel des choses j'ai un message d'erreur du type
utilisation incorrect de Null lorsque je ne saisie rien dans mon contrôle.
Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département], "
", "'


OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme
critère



de ma requete les valeurs entrées dans mon controle de formulaire mais
y a



encore un petit bemol : mon champ [N° de departement] est un champ
texte.



J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets dans
mon



formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets ?




Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ,"
OR



Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", "
OR



ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou
DAO...






"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça
dépasse





largement mes faibles compétences. J'ai essayé ton code associé à
un bouton





recherche mais j'obtiens le message d'erreur suivant : Erreur de
compilation





: Type défini par l'utilisateur non défini. Ce qui semble poser
problème,





c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde
l'aide





associée à ce message d'erreur, j'avoue que je ne comprends pas
grand chose,





compte tenu de mes faibles compétences en
développement-programmation.





Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce
code sur le






"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], "
" ," OR






Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1],






ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N°
de






département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,







ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de
département])=[Formulaires]![ETIQUETTES







ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de
département dans le







contrôle [Département] de mon formulaire, afin que la requete
m'affiche les







organismes de plusieurs départements. Désolé si je ne suis pas
très clair et







merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement
et dans cette









requete, dans la zone critere j'ai mis la référence du
controle de mon









formulaire. Est-ce plus claire comme ça ? Merci de ton
aide.











Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de
formualire?













Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour
specifier un critere











dans une requete. Jusque la rien de complique mais ma
difficulte c'est que je











souhaiterais que ce seul controle me permette de
specifier un ou plusieurs











criteres pour un meme champ. Par exemple, lorsque je
souhaite que ma requete











affiche les clients du departement 86, il me suffit de
taper 86 dans le











controle utilise comme critere du champ departement et
cela marche tres bien.











Par contre si je veux que ma requete affiche les
clients des departements 86











ou 79, j'ai beau saisir 86 Ou 79 dans mon controle,
cela ne marche pas. J'ai











essaye plusieurs syntaxes dans mon controle avec
Comme, Dans... mais ça ne











marche pas.
Pouvez-vous m'aider ? Par avance merci.






















Avatar
Bubu
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

------------------------------------
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'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 département.
Parcequ'en l'état actuel des choses j'ai un message d'erreur du type
utilisation incorrect de Null lorsque je ne saisie rien dans mon contrôle.
Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département], "
", "'


OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien comme
critère



de ma requete les valeurs entrées dans mon controle de formulaire mais
y a



encore un petit bemol : mon champ [N° de departement] est un champ
texte.



J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets dans
mon



formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets ?




Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " " ,"
OR



Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " ", "
OR



ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT PRECIEUSE !


Regarde dans le module si dans "références" tu as bien DAO3.6 ou
DAO...






"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais pas, ça
dépasse





largement mes faibles compétences. J'ai essayé ton code associé à
un bouton





recherche mais j'obtiens le message d'erreur suivant : Erreur de
compilation





: Type défini par l'utilisateur non défini. Ce qui semble poser
problème,





c'est l''expression suivante : qdf As QueryDef. Lorsque je regarde
l'aide





associée à ce message d'erreur, j'avoue que je ne comprends pas
grand chose,





compte tenu de mes faibles compétences en
développement-programmation.





Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce
code sur le






"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], "
" ," OR






Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse
1],






ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE ORGANISME.[N°
de






département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,







ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de
département])=[Formulaires]![ETIQUETTES







ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de
département dans le







contrôle [Département] de mon formulaire, afin que la requete
m'affiche les







organismes de plusieurs départements. Désolé si je ne suis pas
très clair et







merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ departement
et dans cette









requete, dans la zone critere j'ai mis la référence du
controle de mon









formulaire. Est-ce plus claire comme ça ? Merci de ton
aide.











Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de
formualire?













Bonjour a tous,
Je souhaite utiliser un controle de formulaire pour
specifier un critere











dans une requete. Jusque la rien de complique mais ma
difficulte c'est que je











souhaiterais que ce seul controle me permette de
specifier un ou plusieurs











criteres pour un meme champ. Par exemple, lorsque je
souhaite que ma requete











affiche les clients du departement 86, il me suffit de
taper 86 dans le











controle utilise comme critere du champ departement et
cela marche tres bien.











Par contre si je veux que ma requete affiche les
clients des departements 86











ou 79, j'ai beau saisir 86 Ou 79 dans mon controle,
cela ne marche pas. J'ai











essaye plusieurs syntaxes dans mon controle avec
Comme, Dans... mais ça ne











marche pas.
Pouvez-vous m'aider ? Par avance merci.



























Avatar
Jessy Sempere [MVP]
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

------------------------------------
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
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

------------------------------------
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'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 département.
Parcequ'en l'état actuel des choses j'ai un message d'erreur du type
utilisation incorrect de Null lorsque je ne saisie rien dans mon
contrôle.



Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département],
"




", "'
OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien
comme





critère
de ma requete les valeurs entrées dans mon controle de formulaire
mais





y a
encore un petit bemol : mon champ [N° de departement] est un champ
texte.



J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets
dans





mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets ?




Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " "
,"





OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], "
", "





OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT
PRECIEUSE !







Regarde dans le module si dans "références" tu as bien DAO3.6 ou
DAO...






"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais
pas, ça







dépasse
largement mes faibles compétences. J'ai essayé ton code
associé à







un bouton
recherche mais j'obtiens le message d'erreur suivant : Erreur
de







compilation
: Type défini par l'utilisateur non défini. Ce qui semble
poser







problème,
c'est l''expression suivante : qdf As QueryDef. Lorsque je
regarde







l'aide
associée à ce message d'erreur, j'avoue que je ne comprends
pas







grand chose,
compte tenu de mes faibles compétences en
développement-programmation.





Connais-tu la marche à suivre pour débloquer tout ça ?
Encore merci crinblanc.


Crée un bouton "Recherche" pour ouvrir ta requête et mets ce
code sur le






"Click"

Dim qdf As QueryDef, criteres as String

criteres = Replace(Forms![ETIQUETTES
ORGANISME]![Département], "








" ," OR
Forms![ETIQUETTES ORGANISME]![Département] = ")

Set qdf = CurrentDb.QueryDefs("Nom-de-ta-requête")
qdf.SQL="SELECT ORGANISME.[Nom organisme],
ORGANISME.[Adresse








1],
ORGANISME.Commune,
ORGANISME.[N° de département] FROM ORGANISME WHERE
ORGANISME.[N°








de
département] = " & criteres

SEPARE LES N° PAR UN ESPACE!!

"Bubu" wrote:

Voici le SQL de ma requete :

SELECT ORGANISME.[Nom organisme], ORGANISME.[Adresse 1],
ORGANISME.Commune,







ORGANISME.[N° de département]
FROM ORGANISME
WHERE (((ORGANISME.[N° de
département])=[Formulaires]![ETIQUETTES







ORGANISME]![Département]));

Ce que je voudrais c'est pouvoir saisir plusieurs N° de
département dans le







contrôle [Département] de mon formulaire, afin que la
requete









m'affiche les
organismes de plusieurs départements. Désolé si je ne suis
pas









très clair et
merci.


Donne-moi le SQL de ta requête.



Oui la requete existe, elle contient le champ
departement











et dans cette
requete, dans la zone critere j'ai mis la référence du
controle de mon









formulaire. Est-ce plus claire comme ça ? Merci de ton
aide.











Pas bien clair ton affaire!
La requête existe?
Si oui, un critère fait référence à ton contrôle de
formualire?













Bonjour a tous,
Je souhaite utiliser un controle de formulaire
pour













specifier un critere
dans une requete. Jusque la rien de complique mais
ma













difficulte c'est que je
souhaiterais que ce seul controle me permette de
specifier un ou plusieurs











criteres pour un meme champ. Par exemple, lorsque
je













souhaite que ma requete
affiche les clients du departement 86, il me
suffit de













taper 86 dans le
controle utilise comme critere du champ
departement et













cela marche tres bien.
Par contre si je veux que ma requete affiche les
clients des departements 86











ou 79, j'ai beau saisir 86 Ou 79 dans mon
controle,













cela ne marche pas. J'ai
essaye plusieurs syntaxes dans mon controle avec
Comme, Dans... mais ça ne











marche pas.
Pouvez-vous m'aider ? Par avance merci.





























Avatar
Bubu
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

------------------------------------
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
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

------------------------------------
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'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 département.
Parcequ'en l'état actuel des choses j'ai un message d'erreur du type
utilisation incorrect de Null lorsque je ne saisie rien dans mon
contrôle.



Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES ORGANISME]![Département],
"




", "'
OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien
comme





critère
de ma requete les valeurs entrées dans mon controle de formulaire
mais





y a
encore un petit bemol : mon champ [N° de departement] est un champ
texte.



J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets
dans





mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets ?




Pour info, il a fallu que je modifie un peu la ligne suivante :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], " "
,"





OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département], "
", "





OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT
PRECIEUSE !







Regarde dans le module si dans "références" tu as bien DAO3.6 ou
DAO...






"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais
pas, ça







dépasse
largement mes faibles compétences. J'ai essayé ton code
associé à







un bouton











Avatar
Jessy Sempere [MVP]
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
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

------------------------------------
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
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

------------------------------------
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'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
département.





Parcequ'en l'état actuel des choses j'ai un message d'erreur du
type





utilisation incorrect de Null lorsque je ne saisie rien dans mon
contrôle.



Merci d'avance.


Essaie çà

criteres = "'" & Replace(Forms![ETIQUETTES
ORGANISME]![Département],






"
", "'
OR
ORGANISME.[N° de département] = '") & "'"


"Bubu" wrote:

C'est presque parfait. Ca semble vouloir marcher (ça fixe bien
comme





critère
de ma requete les valeurs entrées dans mon controle de
formulaire







mais
y a
encore un petit bemol : mon champ [N° de departement] est un
champ







texte.
J'ai donc un message d'erreur lorsque je saisis mes numéros de
département



sans guillement. Suis-je condamné à saisir avec des guillemets
dans





mon
formulaire ou y a-t-il moyen que le module ajoute lui-meme les
guillemets ?




Pour info, il a fallu que je modifie un peu la ligne suivante
:







criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département],
" "







,"
OR
Forms![ETIQUETTES ORGANISME]![Département] = ")
modifiée en :
criteres = Replace(Forms![ETIQUETTES ORGANISME]![Département],
"







", "
OR
ORGANISME.[N° de département] = ")

Une fois de plus je te remercie pour ton aide EXTREMEMENT
PRECIEUSE !







Regarde dans le module si dans "références" tu as bien
DAO3.6 ou








DAO...


"Bubu" wrote:

Effectivement, je comprends mieux pourquoi je n'y arrivais
pas, ça







dépasse
largement mes faibles compétences. J'ai essayé ton code
associé à







un bouton













Avatar
Bubu
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.
Bubu


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
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

------------------------------------
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
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

------------------------------------
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'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












1 2 3