Filtrer entre deux dates

Le
Opium
Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Fabien
Le #6318341
Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...

Opium
Le #6392931
Merci Fabien pour ton aide. effectivement le between fonctionne assez bien.
Seulement j'ai utiliser un select case pour faire un filtre en cascade. Car
je filtre "et" sur un champ société "et" sur un champ fournisseur "et" entre
deux dates. Seulement ne pas remplir un champ est bloquant ?

1) comment faire pour que quand le champ est vide il me filtre sur tous les
enregistrements sur ce champ
2) le between ne correspond pas à <=>= mais à strictement supérieur e
inférieur et égal. est ce normal? J'ai donc essayé de contourné le pb en
mettant
-1 dans mon code
"[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")


cela marceh sauf si je met le 01/01/07. Le résultat est bien pourtant
31/12/06 mais du coup il ne me sélectionne aucun enregistrement!!! Mystère!!

Merci pour ton aide Fabien
;-)

Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...




Fabien
Le #6392861
Merci Fabien pour ton aide. effectivement le between fonctionne assez bien.
Seulement j'ai utiliser un select case pour faire un filtre en cascade. Car
je filtre "et" sur un champ société "et" sur un champ fournisseur "et" entre
deux dates. Seulement ne pas remplir un champ est bloquant ?

1) comment faire pour que quand le champ est vide il me filtre sur tous les
enregistrements sur ce champ
2) le between ne correspond pas à <=>= mais à strictement supérieur e
inférieur et égal. est ce normal? J'ai donc essayé de contourné le pb en
mettant
-1 dans mon code
"[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")


cela marceh sauf si je met le 01/01/07. Le résultat est bien pourtant
31/12/06 mais du coup il ne me sélectionne aucun enregistrement!!! Mystère!!

Merci pour ton aide Fabien
;-)

Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...

Salut,


En ce qui concerne le between t'es sur? j'avais jamais constaté ça. Mais
bon ben je reverifirais....
Pour tes tests en cascade si une zone est vide il suffit de ne pas la
mettre dans le filtre.
Pourrais tu me faire voir le code que tu utilises ?



Opium
Le #6392771
ACCROCHE TOI

Private Sub masociete_AfterUpdate()
'1
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'2
Select Case Nz([monfourn], "") = "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " and [Date] between" & Format(Me.du -
(1), "#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'3
Select Case Nz([monfourn], "") <> "" And Nz([du], "") = "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] <=" & Format(Me.au,
"#mm/dd/yyyy#")
Case False
'4
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] >=" & Format(Me.du,
"#mm/dd/yyyy#")
Case False
'5
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False
MsgBox ("erreur")
'6
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False

'7
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") = ""
Case True
Me.Filter = "[nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
MsgBox ("veuillez renseigner un champ supplémentaire svp pour que
le filtre soit pris en compte")


End Select
End Select
End Select
End Select
End Select
End Select
End Select


Me.FilterOn = True


End Sub


Et voilà....
mais vu qu'il y a 4 champ ça me ferait donc en possibilités différentes 4
puissance 4 donc 64 possibilités différentes non? Je sui spas sortie de
l'auberge hihihi et en plus ça me fait rire! quelle blonde vraiment.
Merci fabien


Merci Fabien pour ton aide. effectivement le between fonctionne assez bien.
Seulement j'ai utiliser un select case pour faire un filtre en cascade. Car
je filtre "et" sur un champ société "et" sur un champ fournisseur "et" entre
deux dates. Seulement ne pas remplir un champ est bloquant ?

1) comment faire pour que quand le champ est vide il me filtre sur tous les
enregistrements sur ce champ
2) le between ne correspond pas à <=>= mais à strictement supérieur e
inférieur et égal. est ce normal? J'ai donc essayé de contourné le pb en
mettant
-1 dans mon code
"[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")


cela marceh sauf si je met le 01/01/07. Le résultat est bien pourtant
31/12/06 mais du coup il ne me sélectionne aucun enregistrement!!! Mystère!!

Merci pour ton aide Fabien
;-)

Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...

Salut,


En ce qui concerne le between t'es sur? j'avais jamais constaté ça. Mais
bon ben je reverifirais....
Pour tes tests en cascade si une zone est vide il suffit de ne pas la
mettre dans le filtre.
Pourrais tu me faire voir le code que tu utilises ?






Fabien
Le #6392631
ACCROCHE TOI

Private Sub masociete_AfterUpdate()
'1
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'2
Select Case Nz([monfourn], "") = "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " and [Date] between" & Format(Me.du -
(1), "#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'3
Select Case Nz([monfourn], "") <> "" And Nz([du], "") = "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] <=" & Format(Me.au,
"#mm/dd/yyyy#")
Case False
'4
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] >=" & Format(Me.du,
"#mm/dd/yyyy#")
Case False
'5
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False
MsgBox ("erreur")
'6
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False

'7
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") = ""
Case True
Me.Filter = "[nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
MsgBox ("veuillez renseigner un champ supplémentaire svp pour que
le filtre soit pris en compte")


End Select
End Select
End Select
End Select
End Select
End Select
End Select


Me.FilterOn = True


End Sub


Et voilà....
mais vu qu'il y a 4 champ ça me ferait donc en possibilités différentes 4
puissance 4 donc 64 possibilités différentes non? Je sui spas sortie de
l'auberge hihihi et en plus ça me fait rire! quelle blonde vraiment.
Merci fabien


Merci Fabien pour ton aide. effectivement le between fonctionne assez bien.
Seulement j'ai utiliser un select case pour faire un filtre en cascade. Car
je filtre "et" sur un champ société "et" sur un champ fournisseur "et" entre
deux dates. Seulement ne pas remplir un champ est bloquant ?

1) comment faire pour que quand le champ est vide il me filtre sur tous les
enregistrements sur ce champ
2) le between ne correspond pas à <=>= mais à strictement supérieur e
inférieur et égal. est ce normal? J'ai donc essayé de contourné le pb en
mettant
-1 dans mon code
"[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
cela marceh sauf si je met le 01/01/07. Le résultat est bien pourtant

31/12/06 mais du coup il ne me sélectionne aucun enregistrement!!! Mystère!!

Merci pour ton aide Fabien
;-)

Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...

Salut,


En ce qui concerne le between t'es sur? j'avais jamais constaté ça. Mais
bon ben je reverifirais....
Pour tes tests en cascade si une zone est vide il suffit de ne pas la
mettre dans le filtre.
Pourrais tu me faire voir le code que tu utilises ?

Re


Bon ben là effectivement va falloir mettre ça a plat.
Je laisse passer mon RTT (ben oui ça existe encore ;-) et je reviens
demain bon pied bon oeuil.





Fabien
Le #6392371
ACCROCHE TOI

Private Sub masociete_AfterUpdate()
'1
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'2
Select Case Nz([monfourn], "") = "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " and [Date] between" & Format(Me.du -
(1), "#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
'3
Select Case Nz([monfourn], "") <> "" And Nz([du], "") = "" And
Nz([au], "") <> "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] <=" & Format(Me.au,
"#mm/dd/yyyy#")
Case False
'4
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Me.Filter = Me.Filter & " AND [nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [date] >=" & Format(Me.du,
"#mm/dd/yyyy#")
Case False
'5
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False
MsgBox ("erreur")
'6
Select Case Nz([monfourn], "") = "" And Nz([du], "") = "" And
Nz([au], "") = "" And Nz([masociete], "") <> ""
Case True
Me.Filter = "[nsoc] =" & Me![masociete]
Case False

'7
Select Case Nz([monfourn], "") <> "" And Nz([du], "") <> "" And
Nz([au], "") <> "" And Nz([masociete], "") = ""
Case True
Me.Filter = "[nfourn]=" & Me![monfourn]
Me.Filter = Me.Filter & "and [Date] between" & Format(Me.du - 1,
"#mm/dd/yyyy#") & " and " & Format(Me.au, "#mm/dd/yyyy#")
Case False
MsgBox ("veuillez renseigner un champ supplémentaire svp pour que
le filtre soit pris en compte")


End Select
End Select
End Select
End Select
End Select
End Select
End Select


Me.FilterOn = True


End Sub


Et voilà....
mais vu qu'il y a 4 champ ça me ferait donc en possibilités différentes 4
puissance 4 donc 64 possibilités différentes non? Je sui spas sortie de
l'auberge hihihi et en plus ça me fait rire! quelle blonde vraiment.
Merci fabien


Merci Fabien pour ton aide. effectivement le between fonctionne assez bien.
Seulement j'ai utiliser un select case pour faire un filtre en cascade. Car
je filtre "et" sur un champ société "et" sur un champ fournisseur "et" entre
deux dates. Seulement ne pas remplir un champ est bloquant ?

1) comment faire pour que quand le champ est vide il me filtre sur tous les
enregistrements sur ce champ
2) le between ne correspond pas à <=>= mais à strictement supérieur e
inférieur et égal. est ce normal? J'ai donc essayé de contourné le pb en
mettant
-1 dans mon code
"[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
cela marceh sauf si je met le 01/01/07. Le résultat est bien pourtant

31/12/06 mais du coup il ne me sélectionne aucun enregistrement!!! Mystère!!

Merci pour ton aide Fabien
;-)

Bonjour,

je sèche sur un code qui me fait tourner en bourrique. Pouvez vous
m'éclairez svp.
j'ai un formulaire avec des champs nsoc, nfourn et date
Avec des listes déroulantes j'arrive à filtrer mon formulaire avec les codes
suivants
Private Sub masociete_AfterUpdate()
Me.Filter = "[nsoc] =" & Me![masociete]
Me.FilterOn = True
End Sub

et idem pour mon champ nfourn. Pour le moment pas de problème j'arrive à
filtrer les deux en mêmes temps.
Par la suite j'ai voulu pousser le filtre et trier selon un intervalle de
date.
j'ai crée 2 champ texte "du" et "au" et
J'étais parti sur le code suivant :
sur maj du champ du
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
Me.FilterOn = True

sur maj du champ au
Me.Filter = "[date] <=" & Format(Me.au, "#mm/dd/yyyy#")
Me.FilterOn = True

le pb c'est que lorsque j'active un filtre sur un des deux champs il ne m'en
prend qu'un en compte. ex : j'ai 4 dates : 02/08 03/08 04/08 05/08
je selectionne dans mon champ du 03/08 le résultat est donc 03/08 04/08 05/08
je selectionne dans mon champ au 04/08 le résultat est 02/08 03/08 04/08
le 02/08 est revenu mais je ne le veux pas. je veux que mon champ du et au
soit des conditions associées en sachant que je pourrais avoir un des deux
champs vides tout de même.
Comment faire?
Merci




Salut,

Tu peux peut-être utiliser between
avec les test qui vont bien
Dans after_update de de [du]
If nz([au],"")<>"" then
Me filter = "[Date] between" & Format(Me.du, "#mm/dd/yyyy#") & " and
" & Format(Me.au, "#mm/dd/yyyy#")
Else
Me.Filter = "[date] >=" & Format(Me.du, "#mm/dd/yyyy#")
end if
Me.filteron = true

Et idem pour after_update [au]

PS : l'utilisation de [Date] en nom de champ n'est pas conseillée. Date
étant un mot reservé d'access.
A toi de jouer ...

Salut,


En ce qui concerne le between t'es sur? j'avais jamais constaté ça. Mais
bon ben je reverifirais....
Pour tes tests en cascade si une zone est vide il suffit de ne pas la
mettre dans le filtre.
Pourrais tu me faire voir le code que tu utilises ?

Bon on va voir si mon RTT a été profitable ;-)


Soit 4 Variables MonFourn,Du,Au,MaSoc

F1="" 'Filtre sur MonFourn
F2="" 'Filtre sur Du Au
F3="" 'Filtre sur MaSoc
F="" 'Concaténation des 3 précédents

If MonFourn<>"" then F1="[MonFourn]="&Monfourn
If Au<>"" and Du<>"" then
F2="[Date] between #" & Format(me.du,"mm/dd/yyyy") & "# and #" &
format(Me.Au,"mm/dd/yyyy") & "#"
Else
If Me.Au<>"" then
F2="[Date]<=#" & format(Me.Au,"mm/dd/yyyy") & "#"
else
If Me.Du<>"" then
F2="[Date]>=#" & format(Me.du,"mm/dd/yyyy") & "#"
End if
End if
End if
If MaSoc<>"" then F3="[MaSoc]=" & Me.MaSoc

If F2<>"" then
F=F& "and " & F2
else

End if
If F<>"" then
F=F & " and " & F3
Else
F = F3
End If
Me.filter = F
Me.FilterOn= (F<>"")

A essayer ....





Publicité
Poster une réponse
Anonyme