OVH Cloud OVH Cloud

Erreur d'instruction VB ça continue

5 réponses
Avatar
James
Bonjour,

Je suis d=E9j=E0 intervenu hier mais apr=E8s l'aide de Eric et=20
quelques modifications mon filtre ne fonctionne tjrs pas.

J'ai mis en place du code VB pour me permettre de faire=20
fonctionner un filtre dynamique VB.

Je ne comprend pas j'ai un message d'erreur =E0 l'ouverture=20
qui me dit:
"Dans l'instruction SELECT, un mot r=E9serv=E9 ou un argument=20
est mal orthographi=E9 ou absent, ou la ponctuation est=20
incorrecte."

Voici mon code:
Option Compare Database

Private Sub chkOutillageEb_Click()
If Me.chkOutillageEb Then
Me.cmbOutillageEb.Visible =3D False
Else
Me.cmbOutillageEb.Visible =3D True
End If

RefreshQuery

End Sub

Private Sub chkOutillageFi_Click()
If Me.chkOutillageFi Then
Me.cmbOutillageFi.Visible =3D False
Else
Me.cmbOutillageFi.Visible =3D True
End If

RefreshQuery

End Sub

Private Sub chkLotFi_Click()
If Me.chkLotFi Then
Me.cmbLotFi.Visible =3D False
Else
Me.cmbLotFi.Visible =3D True
End If

RefreshQuery

End Sub

Private Sub chkLotEb_Click()
If Me.chkLotEb Then
Me.cmbLotEb.Visible =3D False
Else
Me.cmbLotEb.Visible =3D True
End If

RefreshQuery

End Sub

Private Sub chkLibelleOutillage_Click()
If Me.chkLibelleOutillage Then
Me.txtLibelleOutillage.Visible =3D False
Else
Me.txtLibelleOutillage.Visible =3D True
End If

RefreshQuery

End Sub

=20
Private Sub cmbOutillageFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbOutillageEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub txtLibelleOutillage_BeforeUpdate(Cancel As=20
Integer)
RefreshQuery
End Sub


Private Sub Form_Load()
Dim ctl As Control

For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "chk"
ctl.Value =3D -1
Case "txt"
ctl.Visible =3D False
ctl.Value =3D ""
Case "cmb"
ctl.Visible =3D False
End Select

Next ctl

Me.lstResults.RowSource =3D "SELECT Finisseur.[Code=20
article],[Libell=E9 art],[R=E9f=E9rence MdB],[R=E9f=E9rence=20
coiffante],[R=E9f=E9rence Adapt poin=E7on],[R=E9f=E9rence Fourreau],
[R=E9f=E9rence T=EAte de S], [R=E9f=E9rence Pinces to], [R=E9f=E9rence=20
Plaque V], [R=E9f=E9rence Poin=E7on], [R=E9f=E9rence refroidisseur],
[R=E9f=E9rence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.[Code=20
Article] FROM [Filtre accessoires];"
Me.lstResults.Requery

End Sub

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL =3D "SELECT Finisseur.[Code article],[Libell=E9 art],
[R=E9f=E9rence MdB],[R=E9f=E9rence coiffante],[R=E9f=E9rence Adapt=20
poin=E7on],[R=E9f=E9rence Fourreau],[R=E9f=E9rence T=EAte de S],=20
[R=E9f=E9rence Pinces to], [R=E9f=E9rence Plaque V], [R=E9f=E9rence=20
Poin=E7on], [R=E9f=E9rence refroidisseur],[R=E9f=E9rence Entonnoir],
[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM [Filtre=20
accessoires] Where Finisseur.[Code article]<>0"

If Not Me.chkOutillageFi Then
SQL =3D SQL & " And Finisseur.[Code article]=3D'" &=20
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL =3D SQL & " And [SOM Fi]=3D '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL =3D SQL & " And Ebaucheur.[Code article]=3D '" &=20
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL =3D SQL & " And [SOM Eb]=3D '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL =3D SQL & " And [Libell=E9 art]like '*" &=20
Me.txtLibelleOutillage & "'"
End If

SQLWhere =3D Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL =3D SQL & ";"

Me.lstResults.RowSource =3D SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais je=20
n'arrive pas =E0 la trouver.

En + y a une histoire avec le type des donn=E9es :=20
num=E9rique ou alphanum=E9rique.

5 réponses

Avatar
Charles ERNST
il y a probablement dans le résultat de la requête sous-jacente un problème
de guillemet ( " ) ou d'apostrophe ( ' )

"James" a écrit dans le message de
news:8aa301c4785d$a4990580$
Bonjour,

Je suis déjà intervenu hier mais après l'aide de Eric et
quelques modifications mon filtre ne fonctionne tjrs pas.

J'ai mis en place du code VB pour me permettre de faire
fonctionner un filtre dynamique VB.

Je ne comprend pas j'ai un message d'erreur à l'ouverture
qui me dit:
"Dans l'instruction SELECT, un mot réservé ou un argument
est mal orthographié ou absent, ou la ponctuation est
incorrecte."

Voici mon code:
Option Compare Database

Private Sub chkOutillageEb_Click()
If Me.chkOutillageEb Then
Me.cmbOutillageEb.Visible = False
Else
Me.cmbOutillageEb.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkOutillageFi_Click()
If Me.chkOutillageFi Then
Me.cmbOutillageFi.Visible = False
Else
Me.cmbOutillageFi.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLotFi_Click()
If Me.chkLotFi Then
Me.cmbLotFi.Visible = False
Else
Me.cmbLotFi.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLotEb_Click()
If Me.chkLotEb Then
Me.cmbLotEb.Visible = False
Else
Me.cmbLotEb.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLibelleOutillage_Click()
If Me.chkLibelleOutillage Then
Me.txtLibelleOutillage.Visible = False
Else
Me.txtLibelleOutillage.Visible = True
End If

RefreshQuery

End Sub


Private Sub cmbOutillageFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbOutillageEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub txtLibelleOutillage_BeforeUpdate(Cancel As
Integer)
RefreshQuery
End Sub


Private Sub Form_Load()
Dim ctl As Control

For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "chk"
ctl.Value = -1
Case "txt"
ctl.Visible = False
ctl.Value = ""
Case "cmb"
ctl.Visible = False
End Select

Next ctl

Me.lstResults.RowSource = "SELECT Finisseur.[Code
article],[Libellé art],[Référence MdB],[Référence
coiffante],[Référence Adapt poinçon],[Référence Fourreau],
[Référence Tête de S], [Référence Pinces to], [Référence
Plaque V], [Référence Poinçon], [Référence refroidisseur],
[Référence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.[Code
Article] FROM [Filtre accessoires];"
Me.lstResults.Requery

End Sub

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT Finisseur.[Code article],[Libellé art],
[Référence MdB],[Référence coiffante],[Référence Adapt
poinçon],[Référence Fourreau],[Référence Tête de S],
[Référence Pinces to], [Référence Plaque V], [Référence
Poinçon], [Référence refroidisseur],[Référence Entonnoir],
[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM [Filtre
accessoires] Where Finisseur.[Code article]<>0"

If Not Me.chkOutillageFi Then
SQL = SQL & " And Finisseur.[Code article]='" &
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL = SQL & " And [SOM Fi]= '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And Ebaucheur.[Code article]= '" &
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL = SQL & " And [SOM Eb]= '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais je
n'arrive pas à la trouver.

En + y a une histoire avec le type des données :
numérique ou alphanumérique.
Avatar
Charles ERNST
If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If
il manque aussi un espace devant Like dans la routine ci-dessus

"Charles ERNST" <charles.ernst(antispam)@micro-gestion.fr> a écrit dans le
message de news:
il y a probablement dans le résultat de la requête sous-jacente un
problème

de guillemet ( " ) ou d'apostrophe ( ' )

"James" a écrit dans le message de
news:8aa301c4785d$a4990580$
Bonjour,

Je suis déjà intervenu hier mais après l'aide de Eric et
quelques modifications mon filtre ne fonctionne tjrs pas.

J'ai mis en place du code VB pour me permettre de faire
fonctionner un filtre dynamique VB.

Je ne comprend pas j'ai un message d'erreur à l'ouverture
qui me dit:
"Dans l'instruction SELECT, un mot réservé ou un argument
est mal orthographié ou absent, ou la ponctuation est
incorrecte."

Voici mon code:
Option Compare Database

Private Sub chkOutillageEb_Click()
If Me.chkOutillageEb Then
Me.cmbOutillageEb.Visible = False
Else
Me.cmbOutillageEb.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkOutillageFi_Click()
If Me.chkOutillageFi Then
Me.cmbOutillageFi.Visible = False
Else
Me.cmbOutillageFi.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLotFi_Click()
If Me.chkLotFi Then
Me.cmbLotFi.Visible = False
Else
Me.cmbLotFi.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLotEb_Click()
If Me.chkLotEb Then
Me.cmbLotEb.Visible = False
Else
Me.cmbLotEb.Visible = True
End If

RefreshQuery

End Sub

Private Sub chkLibelleOutillage_Click()
If Me.chkLibelleOutillage Then
Me.txtLibelleOutillage.Visible = False
Else
Me.txtLibelleOutillage.Visible = True
End If

RefreshQuery

End Sub


Private Sub cmbOutillageFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotFi_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbOutillageEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub cmbLotEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub
Private Sub txtLibelleOutillage_BeforeUpdate(Cancel As
Integer)
RefreshQuery
End Sub


Private Sub Form_Load()
Dim ctl As Control

For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "chk"
ctl.Value = -1
Case "txt"
ctl.Visible = False
ctl.Value = ""
Case "cmb"
ctl.Visible = False
End Select

Next ctl

Me.lstResults.RowSource = "SELECT Finisseur.[Code
article],[Libellé art],[Référence MdB],[Référence
coiffante],[Référence Adapt poinçon],[Référence Fourreau],
[Référence Tête de S], [Référence Pinces to], [Référence
Plaque V], [Référence Poinçon], [Référence refroidisseur],
[Référence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.[Code
Article] FROM [Filtre accessoires];"
Me.lstResults.Requery

End Sub

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT Finisseur.[Code article],[Libellé art],
[Référence MdB],[Référence coiffante],[Référence Adapt
poinçon],[Référence Fourreau],[Référence Tête de S],
[Référence Pinces to], [Référence Plaque V], [Référence
Poinçon], [Référence refroidisseur],[Référence Entonnoir],
[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM [Filtre
accessoires] Where Finisseur.[Code article]<>0"

If Not Me.chkOutillageFi Then
SQL = SQL & " And Finisseur.[Code article]='" &
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL = SQL & " And [SOM Fi]= '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And Ebaucheur.[Code article]= '" &
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL = SQL & " And [SOM Eb]= '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais je
n'arrive pas à la trouver.

En + y a une histoire avec le type des données :
numérique ou alphanumérique.




Avatar
Eric
Re James,

Tu aurais du rester dans le même fil sinon il est difficile de suivre.

Dans ton SQL, hier, tu prenais tous les champs dans une même table et là
tu les prends sur 3 tables !!!

Me.lstResults.RowSource = "SELECT Finisseur.[Code
article],[Libellé art],[Référence MdB],[Référence
coiffante],[Référence Adapt poinçon],[Référence Fourreau],
[Référence Tête de S], [Référence Pinces to], [Référence
Plaque V], [Référence Poinçon], [Référence refroidisseur],
[Référence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.[Code
Article] FROM [Filtre accessoires];"
Me.lstResults.Requery



Dans ce SQL tu appelles la table Finisseur,la table Ebaucheur et la table
[Filtre Accessoires]
Si les infos proviennent de 2 tables ou plus, il faut mettre dans ton SQL
les jointures entre les tables.

Pour tester le SQL, copies le dans la fenetre SQL du concepteur de
requête et exécutes le, tu verras vite s'il retourne qq chose ou s'il y a
des erreurs de syntaxe ou de nom de champs.
Le plus simple pour toi serait de créer la rowsource de ta liste avec le
concepteur de requête. Pour cela, tu appelles les propriétés de la liste,
Onglet Données, Ligne Contenu et tu cliques sur les 3.(...) en bout pour
générer la requête puis tu sauves. Le Select apparaitra sur cette ligne


Même problème de table pour la procédure RefreshQuery.

Il se trouve qu'au départ c'est le même sql que celui du dessus à
l'exeception de la condition Where, donc construis-le sur le même modèle.


SQL = "SELECT Finisseur.[Code article],[Libellé art],
[Référence MdB],[Référence coiffante],[Référence Adapt
poinçon],[Référence Fourreau],[Référence Tête de S],
[Référence Pinces to], [Référence Plaque V], [Référence
Poinçon], [Référence refroidisseur],[Référence Entonnoir],
[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM [Filtre
accessoires] Where Finisseur.[Code article]<>0"



Ici, le champ [Code Article],[SOM FI], [SOM Eb] sont considérés
alphanumeriques. Si c'est le cas, alors c'est OK mais faut
t'assurer que tes cmb retournent bien du Texte, si non alors il faut
supprimer les '. (Faire attention qu'une des valeurs des cmb ne
contient d'apostrophes car dans ce cas il faut doubler les
guillemets au lieu de l'apostrophe.)

If Not Me.chkOutillageFi Then
SQL = SQL & " And Finisseur.[Code article]='" &
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL = SQL & " And [SOM Fi]= '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And Ebaucheur.[Code article]= '" &
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL = SQL & " And [SOM Eb]= '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If

A quoi te sert la variable SQLWhere ?

car tu ne la reutilises pas

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais je
n'arrive pas à la trouver.

En + y a une histoire avec le type des données :
numérique ou alphanumérique.


A+

Eric

Avatar
Bonjour,

Dsl si j'ai modifié mon code mais j'ai fait des essais
sur d'autres critères. J'ai quelques infos à préciser :

1) Le cmb code article est de type numérique

2) Au départ je souhaite filtrer sur une requête assez
complexe (Avec jointure...): Filtre accessoire

Est ce que je doit faire apparaître ts mon code SQL dans
le sub RefreshQuery ?

-----Message d'origine-----
Re James,

Tu aurais du rester dans le même fil sinon il est
difficile de suivre.


Dans ton SQL, hier, tu prenais tous les champs dans une
même table et là

tu les prends sur 3 tables !!!

Me.lstResults.RowSource = "SELECT Finisseur.[Code
article],[Libellé art],[Référence MdB],[Référence
coiffante],[Référence Adapt poinçon],[Référence
Fourreau],


[Référence Tête de S], [Référence Pinces to],
[Référence


Plaque V], [Référence Poinçon], [Référence
refroidisseur],


[Référence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.
[Code


Article] FROM [Filtre accessoires];"
Me.lstResults.Requery



Dans ce SQL tu appelles la table Finisseur,la table
Ebaucheur et la table

[Filtre Accessoires]
Si les infos proviennent de 2 tables ou plus, il faut
mettre dans ton SQL

les jointures entre les tables.

Pour tester le SQL, copies le dans la fenetre SQL du
concepteur de

requête et exécutes le, tu verras vite s'il retourne qq
chose ou s'il y a

des erreurs de syntaxe ou de nom de champs.
Le plus simple pour toi serait de créer la rowsource de
ta liste avec le

concepteur de requête. Pour cela, tu appelles les
propriétés de la liste,

Onglet Données, Ligne Contenu et tu cliques sur les 3.
(...) en bout pour

générer la requête puis tu sauves. Le Select apparaitra
sur cette ligne



Même problème de table pour la procédure RefreshQuery.

Il se trouve qu'au départ c'est le même sql que celui du
dessus à

l'exeception de la condition Where, donc construis-le
sur le même modèle.



SQL = "SELECT Finisseur.[Code article],[Libellé art],
[Référence MdB],[Référence coiffante],[Référence Adapt
poinçon],[Référence Fourreau],[Référence Tête de S],
[Référence Pinces to], [Référence Plaque V],
[Référence


Poinçon], [Référence refroidisseur],[Référence
Entonnoir],


[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM
[Filtre


accessoires] Where Finisseur.[Code article]<>0"



Ici, le champ [Code Article],[SOM FI], [SOM Eb]
sont considérés

alphanumeriques. Si c'est le cas, alors c'est OK
mais faut

t'assurer que tes cmb retournent bien du Texte,
si non alors il faut

supprimer les '. (Faire attention qu'une des
valeurs des cmb ne

contient d'apostrophes car dans ce cas il faut
doubler les

guillemets au lieu de l'apostrophe.)

If Not Me.chkOutillageFi Then
SQL = SQL & " And Finisseur.[Code article]='" &
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL = SQL & " And [SOM Fi]= '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And Ebaucheur.[Code article]= '" &
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL = SQL & " And [SOM Eb]= '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If

A quoi te sert la variable SQLWhere ?

car tu ne la reutilises pas

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais
je


n'arrive pas à la trouver.

En + y a une histoire avec le type des données :
numérique ou alphanumérique.


A+

Eric
.




Avatar
James
J'ai trouvé mon erreur! C'est bon ça marche impec.

Merci pour tout!

Dernière question :
Est ce qu'on peut modifier le nom d'une en-tête de
colonne dans une zone de liste ?


-----Message d'origine-----
Re James,

Tu aurais du rester dans le même fil sinon il est
difficile de suivre.


Dans ton SQL, hier, tu prenais tous les champs dans une
même table et là

tu les prends sur 3 tables !!!

Me.lstResults.RowSource = "SELECT Finisseur.[Code
article],[Libellé art],[Référence MdB],[Référence
coiffante],[Référence Adapt poinçon],[Référence
Fourreau],


[Référence Tête de S], [Référence Pinces to],
[Référence


Plaque V], [Référence Poinçon], [Référence
refroidisseur],


[Référence Entonnoir],[SOM Fi], [SOM Eb], Ebaucheur.
[Code


Article] FROM [Filtre accessoires];"
Me.lstResults.Requery



Dans ce SQL tu appelles la table Finisseur,la table
Ebaucheur et la table

[Filtre Accessoires]
Si les infos proviennent de 2 tables ou plus, il faut
mettre dans ton SQL

les jointures entre les tables.

Pour tester le SQL, copies le dans la fenetre SQL du
concepteur de

requête et exécutes le, tu verras vite s'il retourne qq
chose ou s'il y a

des erreurs de syntaxe ou de nom de champs.
Le plus simple pour toi serait de créer la rowsource de
ta liste avec le

concepteur de requête. Pour cela, tu appelles les
propriétés de la liste,

Onglet Données, Ligne Contenu et tu cliques sur les 3.
(...) en bout pour

générer la requête puis tu sauves. Le Select apparaitra
sur cette ligne



Même problème de table pour la procédure RefreshQuery.

Il se trouve qu'au départ c'est le même sql que celui du
dessus à

l'exeception de la condition Where, donc construis-le
sur le même modèle.



SQL = "SELECT Finisseur.[Code article],[Libellé art],
[Référence MdB],[Référence coiffante],[Référence Adapt
poinçon],[Référence Fourreau],[Référence Tête de S],
[Référence Pinces to], [Référence Plaque V],
[Référence


Poinçon], [Référence refroidisseur],[Référence
Entonnoir],


[SOM Fi], [SOM Eb], Ebaucheur.[Code article] FROM
[Filtre


accessoires] Where Finisseur.[Code article]<>0"



Ici, le champ [Code Article],[SOM FI], [SOM Eb]
sont considérés

alphanumeriques. Si c'est le cas, alors c'est OK
mais faut

t'assurer que tes cmb retournent bien du Texte,
si non alors il faut

supprimer les '. (Faire attention qu'une des
valeurs des cmb ne

contient d'apostrophes car dans ce cas il faut
doubler les

guillemets au lieu de l'apostrophe.)

If Not Me.chkOutillageFi Then
SQL = SQL & " And Finisseur.[Code article]='" &
Me.cmbOutillageFi & "'"
End If

If Not Me.chkLotFi Then
SQL = SQL & " And [SOM Fi]= '" & Me.cmbLotFi & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And Ebaucheur.[Code article]= '" &
Me.cmbOutillageEb & "'"
End If

If Not Me.chkLotEb Then
SQL = SQL & " And [SOM Eb]= '" & Me.cmbLotEb & "'"
End If

If Not Me.chkLibelleOutillage Then
SQL = SQL & " And [Libellé art]like '*" &
Me.txtLibelleOutillage & "'"
End If

A quoi te sert la variable SQLWhere ?

car tu ne la reutilises pas

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr
(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

Je pense que l'erreur viens du sub RefreshQuery mais
je


n'arrive pas à la trouver.

En + y a une histoire avec le type des données :
numérique ou alphanumérique.


A+

Eric
.