Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre dans un formulaire par dates

8 réponses
Avatar
Leyley39
bonjour

Je voudrais filtrer des enregistrements dans un formulaire en fonction des
dates (entre deux dates). j'ai donc créé deux textbox pour la date de début
et date de fin du filtre. Avec un code sur le bouton à bascule, le filtre
doit s'appliquer. Voici mon code :

Private Sub BasculeDate_Click()
If Me.BasculeDate.Value Then
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] >=
#" & Me.ladateDébut.Value & "# <= #" & Me.ladateFin.Value & "#"
Else
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
End If
End Sub

Mais ça ne fonctionne pas. Je me trompe peut être dans les " mais comme je
ne m'y connais pas beaucoup en VBA, je sèche. est-ce que quelqu'un voit où
est l'erreur ?


--
Merci de votre aide

Leyley39

8 réponses

Avatar
Dragan
bonjour Leyley,
tu as oublié un truc dans le filtre :
" AND [DATE ACTIVITE]<= #" & Me.ladateFin.Value & "#"
ou
"[DATE ACTIVITE] BETWEEN #" & ladatededebut & "# AND #" & ladatedefin & "#"

"Leyley39" a écrit :

bonjour

Je voudrais filtrer des enregistrements dans un formulaire en fonction des
dates (entre deux dates). j'ai donc créé deux textbox pour la date de début
et date de fin du filtre. Avec un code sur le bouton à bascule, le filtre
doit s'appliquer. Voici mon code :

Private Sub BasculeDate_Click()
If Me.BasculeDate.Value Then
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] >=
#" & Me.ladateDébut.Value & "# <= #" & Me.ladateFin.Value & "#"
Else
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
End If
End Sub

Mais ça ne fonctionne pas. Je me trompe peut être dans les " mais comme je
ne m'y connais pas beaucoup en VBA, je sèche. est-ce que quelqu'un voit où
est l'erreur ?


--
Merci de votre aide

Leyley39


Avatar
Leyley39
J'ai essayé tes deux suggestions. La deuxième semble préférable mais ne
filtre tout. Il doit me manquer encore un petit truc. Voici le code résultant
:

Private Sub BasculeDate_Click()
If Me.BasculeDate.Value Then
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE]
BETWEEN # " & Me.ladateDébut.Value & "# AND #" & Me.ladateFin.Value & "#"
Else
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
End If
End Sub

On s'approche, au moins ca ne bloque plus mais ca filtre tout. ?????
--
Merci de votre aide

Leyley39


"Dragan" a écrit :

bonjour Leyley,
tu as oublié un truc dans le filtre :
" AND [DATE ACTIVITE]<= #" & Me.ladateFin.Value & "#"
ou
"[DATE ACTIVITE] BETWEEN #" & ladatededebut & "# AND #" & ladatedefin & "#"

"Leyley39" a écrit :

> bonjour
>
> Je voudrais filtrer des enregistrements dans un formulaire en fonction des
> dates (entre deux dates). j'ai donc créé deux textbox pour la date de début
> et date de fin du filtre. Avec un code sur le bouton à bascule, le filtre
> doit s'appliquer. Voici mon code :
>
> Private Sub BasculeDate_Click()
> If Me.BasculeDate.Value Then
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] >=
> #" & Me.ladateDébut.Value & "# <= #" & Me.ladateFin.Value & "#"
> Else
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
> End If
> End Sub
>
> Mais ça ne fonctionne pas. Je me trompe peut être dans les " mais comme je
> ne m'y connais pas beaucoup en VBA, je sèche. est-ce que quelqu'un voit où
> est l'erreur ?
>
>
> --
> Merci de votre aide
>
> Leyley39


Avatar
Dragan
Je n'comprends pas. Le filtre ici s'applique au formulaire.
Que souhaites-tu faire ?

"Leyley39" a écrit :

J'ai essayé tes deux suggestions. La deuxième semble préférable mais ne
filtre tout. Il doit me manquer encore un petit truc. Voici le code résultant
:

Private Sub BasculeDate_Click()
If Me.BasculeDate.Value Then
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE]
BETWEEN # " & Me.ladateDébut.Value & "# AND #" & Me.ladateFin.Value & "#"
Else
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
End If
End Sub

On s'approche, au moins ca ne bloque plus mais ca filtre tout. ?????
--
Merci de votre aide

Leyley39


"Dragan" a écrit :

> bonjour Leyley,
> tu as oublié un truc dans le filtre :
> " AND [DATE ACTIVITE]<= #" & Me.ladateFin.Value & "#"
> ou
> "[DATE ACTIVITE] BETWEEN #" & ladatededebut & "# AND #" & ladatedefin & "#"
>
> "Leyley39" a écrit :
>
> > bonjour
> >
> > Je voudrais filtrer des enregistrements dans un formulaire en fonction des
> > dates (entre deux dates). j'ai donc créé deux textbox pour la date de début
> > et date de fin du filtre. Avec un code sur le bouton à bascule, le filtre
> > doit s'appliquer. Voici mon code :
> >
> > Private Sub BasculeDate_Click()
> > If Me.BasculeDate.Value Then
> > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
> > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] >=
> > #" & Me.ladateDébut.Value & "# <= #" & Me.ladateFin.Value & "#"
> > Else
> > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
> > End If
> > End Sub
> >
> > Mais ça ne fonctionne pas. Je me trompe peut être dans les " mais comme je
> > ne m'y connais pas beaucoup en VBA, je sèche. est-ce que quelqu'un voit où
> > est l'erreur ?
> >
> >
> > --
> > Merci de votre aide
> >
> > Leyley39


Avatar
Eric
Bonjour,

Il faut mettre la date au format US :
BETWEEN #" & Format(Me.ladateDébut, "mm/dd/yyyy") & "# AND #" &
Format(Me.ladateFin, "mm/dd/yyyy") & "#"

Leyley39 a écrit :
J'ai essayé tes deux suggestions. La deuxième semble préférable mais ne
filtre tout. Il doit me manquer encore un petit truc. Voici le code résultant
:

Private Sub BasculeDate_Click()
If Me.BasculeDate.Value Then
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE]
BETWEEN # " & Me.ladateDébut.Value & "# AND #" & Me.ladateFin.Value & "#"
Else
Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
End If
End Sub

On s'approche, au moins ca ne bloque plus mais ca filtre tout. ?????



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Leyley39
J'ai défini le format dans le textbox mais ca ne change rien. Si je mais en
format US, il ne retrouvera pas les enregistrements qui eux sont en format
français.
--
Merci de votre aide

Leyley39


"Eric" a écrit :

Bonjour,

Il faut mettre la date au format US :
BETWEEN #" & Format(Me.ladateDébut, "mm/dd/yyyy") & "# AND #" &
Format(Me.ladateFin, "mm/dd/yyyy") & "#"

Leyley39 a écrit :
> J'ai essayé tes deux suggestions. La deuxième semble préférable mais ne
> filtre tout. Il doit me manquer encore un petit truc. Voici le code résultant
> :
>
> Private Sub BasculeDate_Click()
> If Me.BasculeDate.Value Then
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE]
> BETWEEN # " & Me.ladateDébut.Value & "# AND #" & Me.ladateFin.Value & "#"
> Else
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
> End If
> End Sub
>
> On s'approche, au moins ca ne bloque plus mais ca filtre tout. ?????

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Leyley39
Le filtre doit effectivement s'appliquer à un formulaire.

Il y a une liste d'activité en fonction de différente date. L'utilisateur
voit tous les enregistrements mais voudrait les filtrer sur une période
donnée. Donc, j'ai créer deux textbox où l'utilisateur entre la date de début
et de fin de la période d'activité et, après avoir cliqué sur le bouton
"filtrer les enregistrement", ne voit que les activités concernant cette
période. Pour l'instant, le code bloque sur la dernière ligne.

J'ai utilisé ce code pour des champs listes et sur une date précise (et ca
fonctionne bien). Ca ne veut pas fonctionner pour une période comprise entre
deux dates. Avec ce que tu m'as donné Dragan, j'ai l'impression de ne pas
être loin de la solution. Mais ca ne fonctionne toujours pas.
--
Merci de votre aide

Leyley39


"Dragan" a écrit :

Je n'comprends pas. Le filtre ici s'applique au formulaire.
Que souhaites-tu faire ?

"Leyley39" a écrit :

> J'ai essayé tes deux suggestions. La deuxième semble préférable mais ne
> filtre tout. Il doit me manquer encore un petit truc. Voici le code résultant
> :
>
> Private Sub BasculeDate_Click()
> If Me.BasculeDate.Value Then
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE]
> BETWEEN # " & Me.ladateDébut.Value & "# AND #" & Me.ladateFin.Value & "#"
> Else
> Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
> End If
> End Sub
>
> On s'approche, au moins ca ne bloque plus mais ca filtre tout. ?????
> --
> Merci de votre aide
>
> Leyley39
>
>
> "Dragan" a écrit :
>
> > bonjour Leyley,
> > tu as oublié un truc dans le filtre :
> > " AND [DATE ACTIVITE]<= #" & Me.ladateFin.Value & "#"
> > ou
> > "[DATE ACTIVITE] BETWEEN #" & ladatededebut & "# AND #" & ladatedefin & "#"
> >
> > "Leyley39" a écrit :
> >
> > > bonjour
> > >
> > > Je voudrais filtrer des enregistrements dans un formulaire en fonction des
> > > dates (entre deux dates). j'ai donc créé deux textbox pour la date de début
> > > et date de fin du filtre. Avec un code sur le bouton à bascule, le filtre
> > > doit s'appliquer. Voici mon code :
> > >
> > > Private Sub BasculeDate_Click()
> > > If Me.BasculeDate.Value Then
> > > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = True
> > > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] >=
> > > #" & Me.ladateDébut.Value & "# <= #" & Me.ladateFin.Value & "#"
> > > Else
> > > Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.FilterOn = False
> > > End If
> > > End Sub
> > >
> > > Mais ça ne fonctionne pas. Je me trompe peut être dans les " mais comme je
> > > ne m'y connais pas beaucoup en VBA, je sèche. est-ce que quelqu'un voit où
> > > est l'erreur ?
> > >
> > >
> > > --
> > > Merci de votre aide
> > >
> > > Leyley39


Avatar
Eric
Bonjour,

Ne pas définir de format pour la zone de texte et saisir la date au
format français.
Le critère de filtre est une clause SQL Where sans le mot where et donc
il faut écrire la clause en US et mettre les dates au format US comme
indiqué dans mon post précédent.

Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] BETWEEN
#" & Format(Me.ladateDébut, "mm/dd/yyyy") & "# AND #" &
Format(Me.ladateFin, "mm/dd/yyyy") & "#"

Leyley39 a écrit :
J'ai défini le format dans le textbox mais ca ne change rien. Si je mais en
format US, il ne retrouvera pas les enregistrements qui eux sont en format
français.



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr
Avatar
Leyley39
Génial ça marche. Merci. Bizarre tout de même qu'il faille mettre en format
US. Mais bon, en autant que ça fonctionne.
--
Merci beaucoup de votre aide

Leyley39


"Eric" a écrit :

Bonjour,

Ne pas définir de format pour la zone de texte et saisir la date au
format français.
Le critère de filtre est une clause SQL Where sans le mot where et donc
il faut écrire la clause en US et mettre les dates au format US comme
indiqué dans mon post précédent.

Me.SF_2_ACTIVITE_PRO_SMAEC_SMAEC.Form.Filter = "[DATE ACTIVITE] BETWEEN
#" & Format(Me.ladateDébut, "mm/dd/yyyy") & "# AND #" &
Format(Me.ladateFin, "mm/dd/yyyy") & "#"

Leyley39 a écrit :
> J'ai défini le format dans le textbox mais ca ne change rien. Si je mais en
> format US, il ne retrouvera pas les enregistrements qui eux sont en format
> français.

--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr