OVH Cloud OVH Cloud

filtre multi critére

5 réponses
Avatar
brucat
Bonjour,

J'ai un formulaire avec 3 controles qui servent à rechercher
l'enregistrement voulu.
Liste = liste déroulante
Liste2 = date
Liste3 = liste déroulante

Aprés mon choix, j'appuie sur un bouton qui l'affiche le résultat.
Voici le code :
Private Sub Recherche2_Click()
Me.Filter = "NumVendeur Like '*" & Me.Liste.Value & "*'And Datecommande = #"
& Me.Liste2.Value & "# And Nomclient like '*" & Me.Liste3.Value & "*'"
Me.FilterOn = True
End sub

Mon problème est :
si je ne remplit pas le controle liste2(date), j'ai un message d'erreur. Le
filtre ne fonctionne pas
Où est mon erreur?????
Merci pour votre aide.

Brucat

5 réponses

Avatar
Raymond [mvp]
Bonjour.

tu peux procéder ainsi:

Dim F As String
F = "NumVendeur Like '*" & Me.Liste & "*'"
If Not IsNull(Me.Liste2) Then
F = F & " And Datecommande = #" & Format(Me.Liste2, "mm/dd/yyyy") & "#"
End If
F = F & " And Nomclient like '*" & Me.Liste3 & "*'"
Me.Filter = F
Me.FilterOn = True
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddspcr$o47$
Bonjour,

J'ai un formulaire avec 3 controles qui servent à rechercher
l'enregistrement voulu.
Liste = liste déroulante
Liste2 = date
Liste3 = liste déroulante

Aprés mon choix, j'appuie sur un bouton qui l'affiche le résultat.
Voici le code :
Private Sub Recherche2_Click()
Me.Filter = "NumVendeur Like '*" & Me.Liste.Value & "*'And Datecommande =
#" & Me.Liste2.Value & "# And Nomclient like '*" & Me.Liste3.Value & "*'"
Me.FilterOn = True
End sub

Mon problème est :
si je ne remplit pas le controle liste2(date), j'ai un message d'erreur.
Le filtre ne fonctionne pas
Où est mon erreur?????
Merci pour votre aide.

Brucat






Avatar
brucat
merci pour cette réponse rapide.
petite question : pourquoi mettre Format(Me.Liste2, "mm/dd/yyyy") même si
liste2 à déjà un format date abrégé

J'ai testé mais.........

cela fonctionne super 1 fois mais quand je veux un autre recherche j'ai un
message d'erreur : erreur 3075 : erreur de synthaxe..........

Avant de faire ma nouvelle recherche, j'ai un bouton qui me permet de mettre
me.filter = ""
me.filteron = false

donc je redemarre avec un filtre vide.

merci pour votre explication.

Brucat


"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

tu peux procéder ainsi:

Dim F As String
F = "NumVendeur Like '*" & Me.Liste & "*'"
If Not IsNull(Me.Liste2) Then
F = F & " And Datecommande = #" & Format(Me.Liste2, "mm/dd/yyyy") & "#"
End If
F = F & " And Nomclient like '*" & Me.Liste3 & "*'"
Me.Filter = F
Me.FilterOn = True
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddspcr$o47$
Bonjour,

J'ai un formulaire avec 3 controles qui servent à rechercher
l'enregistrement voulu.
Liste = liste déroulante
Liste2 = date
Liste3 = liste déroulante

Aprés mon choix, j'appuie sur un bouton qui l'affiche le résultat.
Voici le code :
Private Sub Recherche2_Click()
Me.Filter = "NumVendeur Like '*" & Me.Liste.Value & "*'And Datecommande >> #" & Me.Liste2.Value & "# And Nomclient like '*" & Me.Liste3.Value &
"*'"
Me.FilterOn = True
End sub

Mon problème est :
si je ne remplit pas le controle liste2(date), j'ai un message d'erreur.
Le filtre ne fonctionne pas
Où est mon erreur?????
Merci pour votre aide.

Brucat










Avatar
Raymond [mvp]
pour la date, vu que tu indiques la valeur entre #, il faut indiquer le
format US et non français.
pour la syntaxe, affiche ici ton filtre que tu as mis, pour voir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddssrm$qed$
merci pour cette réponse rapide.
petite question : pourquoi mettre Format(Me.Liste2, "mm/dd/yyyy") même si
liste2 à déjà un format date abrégé

J'ai testé mais.........

cela fonctionne super 1 fois mais quand je veux un autre recherche j'ai
un
message d'erreur : erreur 3075 : erreur de synthaxe..........

Avant de faire ma nouvelle recherche, j'ai un bouton qui me permet de
mettre
me.filter = ""
me.filteron = false

donc je redemarre avec un filtre vide.

merci pour votre explication.

Brucat



Avatar
brucat
Voici tout le code avec mes 2 boutons : recherche2 -recherches(suppression
du filtre).

Private Sub Recherche2_Click()
Dim F As String

Me.EntêteFormulaire.Visible = True

F = "NumVendeur Like '*" & Me.Liste & "*'"
If Not IsNull(Me.Liste2) Then
F = F & " And Datecommande = #" & Format(Me.Liste2, "mm/dd/yyyy") & "#"
End If
F = F & " And Nomclient like '*" & Me.Liste3 & "*'"
Me.Filter = F
Me.FilterOn = True

If IsNull(Me.Nomclient.Value) And IsNull(Me.NumVendeur.Value) And
IsNull(Me.Datecommande.Value) Then
MsgBox "Aucune Commande ne correspond à votre recherche" & vbCrLf &
"Vérifier vos critéres de selection"
Me.FilterOn = False

End If

Me.Vendeur.SetFocus

End Sub

Private Sub RechercheS_Click()

Me.Filter = ""
Me.FilterOn = True
Me.EntêteFormulaire.Visible = False


End Sub


"Raymond [mvp]" a écrit dans le message de
news: %
pour la date, vu que tu indiques la valeur entre #, il faut indiquer le
format US et non français.
pour la syntaxe, affiche ici ton filtre que tu as mis, pour voir.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddssrm$qed$
merci pour cette réponse rapide.
petite question : pourquoi mettre Format(Me.Liste2, "mm/dd/yyyy") même si
liste2 à déjà un format date abrégé

J'ai testé mais.........

cela fonctionne super 1 fois mais quand je veux un autre recherche j'ai
un
message d'erreur : erreur 3075 : erreur de synthaxe..........

Avant de faire ma nouvelle recherche, j'ai un bouton qui me permet de
mettre
me.filter = ""
me.filteron = false

donc je redemarre avec un filtre vide.

merci pour votre explication.

Brucat







Avatar
Raymond [mvp]
pour l'instant je ne vois pas ce qui pourrait clocher, à part:
Me.Filter = ""
Me.FilterOn = True
je mettrais bien Me.FilterOn = False pour afficher la totalite

sinon, essaie avec
DoCmd.ShowAllRecords
dans Recherche2_Click

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"brucat" a écrit dans le message de news:
ddt067$sc9$
Voici tout le code avec mes 2 boutons : recherche2 -recherches(suppression
du filtre).

Private Sub Recherche2_Click()
Dim F As String

Me.EntêteFormulaire.Visible = True

F = "NumVendeur Like '*" & Me.Liste & "*'"
If Not IsNull(Me.Liste2) Then
F = F & " And Datecommande = #" & Format(Me.Liste2, "mm/dd/yyyy") & "#"
End If
F = F & " And Nomclient like '*" & Me.Liste3 & "*'"
Me.Filter = F
Me.FilterOn = True

If IsNull(Me.Nomclient.Value) And IsNull(Me.NumVendeur.Value) And
IsNull(Me.Datecommande.Value) Then
MsgBox "Aucune Commande ne correspond à votre recherche" & vbCrLf &
"Vérifier vos critéres de selection"
Me.FilterOn = False

End If

Me.Vendeur.SetFocus

End Sub

Private Sub RechercheS_Click()

Me.Filter = ""
Me.FilterOn = True
Me.EntêteFormulaire.Visible = False


End Sub