Recherche d'une plage de dates à partir d'un formulaire

Le
Dom
Bonjour,

Soit un formulaire de consultation fondée sur une table qui comporte 6
enregistrements par exemple avec entre autres un champ date. Ce champ date
comprend des dates identiques ou différentes au format jj/mm/aaaa.

enregistrement 1 : 28/03/2007
enregistrement 2 : 28/03/2007
enregistrement 3 : 29/03/2007
enregistrement 4 : 29/03/2007
enregistrement 5 : 31/03/2007
enregistrement 6 : 01//04/2007

par exemple.

A l'aide d'un bouton de commande, je souhaite que l'utilisateur puisse
saisir dans une inputBox une date de début , puis dans une seconde inputBox
une date de fin (ça, je sais faire) mais qu'ensuite le focus se déplace dans
le formulaire sur le premier enregistrement contenant "date de début" et
qu'avec un second bouton de commande on puisse faire défiler toutes les
occurences du champ "Date" qui sont > ou = à la valeur de "date de début
et < ou = à la valeur de "date de fin" saisies dans les InputBox , mais
uniquement celles-ci (et ça, je ne sais pas faire.). S'ajoute à cela la
gestion des erreurs lorsque l'on a atteint la dernière occurence ou que la
plage de dates saisie n'existe pas

Par rapport à mon exemple, si je saisis dans "date de début" 29/03/2007 et
31/03/2007 dans "date de fin", il faudrait que le focus aille sur le champ
"date" de l'enregistrement 3, puis en cliquant sur un bouton "Suivant",
qu'on passe à l'enregistrement 4, puis au 5, et qu'enfin, si on clique
encore sur le bouton "Suivant", une msgBox affiche un message du style "Il
n'y a plus de date correspondant à votre recherche".

Merci d'avance pour votre aide.

Dominique.
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
Raymond [mvp]
Le #6276291
Bonjour.

tu peux faire plus simple.

tu as deux TextBox nommés DatedeDébut et DateDeFin qui serviront à filtrer
tes enregistrements.
Madate étant le champ de type date dans tes enregistrements.
formulaire2 étant le nom du formulaire.

dans la propriété filtre de ton formulaire tu entres:
[Madate] Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]

et maintenant en mode normal, tu cliques sur appliquer le filtre et tu
verras que tu n'auras que les enregistrements compris entre les deux dates.
tu as plusieurs boutons pour jouer sur les filtres et notamment tu peux
revenir n'importe quand à l'affichage complet.
un filtre n'est qu'une sélection des enregistrements dans le formulaire et
ne change rien dans la table.

Tu peux aussi passer par le code vba pour filter, avec les mêmes champs que
ci-dessus, mais tu rajoutes deux procédures comme ci-dessous:

Private Sub DateDeDébut_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub

Private Sub DateDeFin_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Dom" 4636f4a7$0$9769$
| Bonjour,
|
| Soit un formulaire de consultation fondée sur une table qui comporte 6
| enregistrements par exemple avec entre autres un champ date. Ce champ date
| comprend des dates identiques ou différentes au format jj/mm/aaaa.
|
| enregistrement 1 : 28/03/2007
| enregistrement 2 : 28/03/2007
| enregistrement 3 : 29/03/2007
| enregistrement 4 : 29/03/2007
| enregistrement 5 : 31/03/2007
| enregistrement 6 : 01//04/2007
|
| ...par exemple.
|
| A l'aide d'un bouton de commande, je souhaite que l'utilisateur puisse
| saisir dans une inputBox une date de début , puis dans une seconde
inputBox
| une date de fin (ça, je sais faire) mais qu'ensuite le focus se déplace
dans
| le formulaire sur le premier enregistrement contenant "date de début" et
| qu'avec un second bouton de commande on puisse faire défiler toutes les
| occurences du champ "Date" qui sont > ou = à la valeur de "date de début
| et < ou = à la valeur de "date de fin" saisies dans les InputBox , mais
| uniquement celles-ci (et ça, je ne sais pas faire.). S'ajoute à cela la
| gestion des erreurs lorsque l'on a atteint la dernière occurence ou que la
| plage de dates saisie n'existe pas...
|
| Par rapport à mon exemple, si je saisis dans "date de début" 29/03/2007 et
| 31/03/2007 dans "date de fin", il faudrait que le focus aille sur le champ
| "date" de l'enregistrement 3, puis en cliquant sur un bouton "Suivant",
| qu'on passe à l'enregistrement 4, puis au 5, et qu'enfin, si on clique
| encore sur le bouton "Suivant", une msgBox affiche un message du style "Il
| n'y a plus de date correspondant à votre recherche".
|
| Merci d'avance pour votre aide.
|
| Dominique.
|
|
|
|
|
|
|
|
Dom
Le #6276271
Re,

Merci Raymond :-)))))

J'avais pensé au "Between... And" mais je ne pas savais le faire.

Je vais essayer d'appliquer tes précieux conseils !

Bien cordialement,

Dominique.

"Raymond [mvp]" de news:
Bonjour.

tu peux faire plus simple.

tu as deux TextBox nommés DatedeDébut et DateDeFin qui serviront à filtrer
tes enregistrements.
Madate étant le champ de type date dans tes enregistrements.
formulaire2 étant le nom du formulaire.

dans la propriété filtre de ton formulaire tu entres:
[Madate] Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]

et maintenant en mode normal, tu cliques sur appliquer le filtre et tu
verras que tu n'auras que les enregistrements compris entre les deux
dates.
tu as plusieurs boutons pour jouer sur les filtres et notamment tu peux
revenir n'importe quand à l'affichage complet.
un filtre n'est qu'une sélection des enregistrements dans le formulaire et
ne change rien dans la table.

Tu peux aussi passer par le code vba pour filter, avec les mêmes champs
que
ci-dessus, mais tu rajoutes deux procédures comme ci-dessous:

Private Sub DateDeDébut_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub

Private Sub DateDeFin_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Dom" 4636f4a7$0$9769$
| Bonjour,
|
| Soit un formulaire de consultation fondée sur une table qui comporte 6
| enregistrements par exemple avec entre autres un champ date. Ce champ
date
| comprend des dates identiques ou différentes au format jj/mm/aaaa.
|
| enregistrement 1 : 28/03/2007
| enregistrement 2 : 28/03/2007
| enregistrement 3 : 29/03/2007
| enregistrement 4 : 29/03/2007
| enregistrement 5 : 31/03/2007
| enregistrement 6 : 01//04/2007
|
| ...par exemple.
|
| A l'aide d'un bouton de commande, je souhaite que l'utilisateur puisse
| saisir dans une inputBox une date de début , puis dans une seconde
inputBox
| une date de fin (ça, je sais faire) mais qu'ensuite le focus se déplace
dans
| le formulaire sur le premier enregistrement contenant "date de début" et
| qu'avec un second bouton de commande on puisse faire défiler toutes les
| occurences du champ "Date" qui sont > ou = à la valeur de "date de
début
| et < ou = à la valeur de "date de fin" saisies dans les InputBox , mais
| uniquement celles-ci (et ça, je ne sais pas faire.). S'ajoute à cela la
| gestion des erreurs lorsque l'on a atteint la dernière occurence ou que
la
| plage de dates saisie n'existe pas...
|
| Par rapport à mon exemple, si je saisis dans "date de début" 29/03/2007
et
| 31/03/2007 dans "date de fin", il faudrait que le focus aille sur le
champ
| "date" de l'enregistrement 3, puis en cliquant sur un bouton "Suivant",
| qu'on passe à l'enregistrement 4, puis au 5, et qu'enfin, si on clique
| encore sur le bouton "Suivant", une msgBox affiche un message du style
"Il
| n'y a plus de date correspondant à votre recherche".
|
| Merci d'avance pour votre aide.
|
| Dominique.
|
|
|
|
|
|
|
|




Dom
Le #6274831
Bonjour,

Finalement, et grâce aux pistes fournies par Raymond, j'ai obtenu le
résultat escompté de la façon suivante :

(((([Recherche generale].Date) Between [Entrez la date de début] And [Entrez
la date de fin])))

J'ai enregistré cela dans une requête nommée FiltreDate

Puis sur la proprièté "Sur Clic" d'un bouton, j'ai mis

On Error GoTo Err_Commande54_Click
DoCmd.ApplyFilter "FiltreDate"
Me.Date.SetFocus
Exit_Commande54_Click:
Exit Sub
Err_Commande54_Click:

MsgBox "Aucun courrier départ n'est disponible dans la plage de dates
saisies, ou vous avez cliqué sur le bouton Annuler."
Resume Exit_Commande54_Click
End sub

Et enfin, avec un second bouton de commande, je peux faire défiler dans le
formulaire les enregistrements du filtre avec le code suivant :

On Error GoTo Err_Commande55_Click
DoCmd.GoToRecord , , acNext

Exit_Commande55_Click:
Exit Sub

Err_Commande55_Click:
MsgBox "Il n'y a plus de dates correspondant à votre recherche",
vbInformation, "Fin de la recherche"


Resume Exit_Commande55_Click

End sub

Le code n'est sans doute pas très propre, mais c'est ce que je voulais
obtenir.

Donc, je suis un utilisateur heureux !

Encore merci.

Dominique.

"Dom" 46371879$0$28595$
Re,

Merci Raymond :-)))))

J'avais pensé au "Between... And" mais je ne pas savais le faire.

Je vais essayer d'appliquer tes précieux conseils !

Bien cordialement,

Dominique.

"Raymond [mvp]" message de news:
Bonjour.

tu peux faire plus simple.

tu as deux TextBox nommés DatedeDébut et DateDeFin qui serviront à
filtrer
tes enregistrements.
Madate étant le champ de type date dans tes enregistrements.
formulaire2 étant le nom du formulaire.

dans la propriété filtre de ton formulaire tu entres:
[Madate] Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]

et maintenant en mode normal, tu cliques sur appliquer le filtre et tu
verras que tu n'auras que les enregistrements compris entre les deux
dates.
tu as plusieurs boutons pour jouer sur les filtres et notamment tu peux
revenir n'importe quand à l'affichage complet.
un filtre n'est qu'une sélection des enregistrements dans le formulaire
et
ne change rien dans la table.

Tu peux aussi passer par le code vba pour filter, avec les mêmes champs
que
ci-dessus, mais tu rajoutes deux procédures comme ci-dessous:

Private Sub DateDeDébut_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub

Private Sub DateDeFin_AfterUpdate()
Me.Filter = "[Madate]Between forms!formulaire2![DatedeDébut] And
forms!formulaire2![DateDeFin]"
Me.FilterOn = True
End Sub


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Dom" 4636f4a7$0$9769$
| Bonjour,
|
| Soit un formulaire de consultation fondée sur une table qui comporte 6
| enregistrements par exemple avec entre autres un champ date. Ce champ
date
| comprend des dates identiques ou différentes au format jj/mm/aaaa.
|
| enregistrement 1 : 28/03/2007
| enregistrement 2 : 28/03/2007
| enregistrement 3 : 29/03/2007
| enregistrement 4 : 29/03/2007
| enregistrement 5 : 31/03/2007
| enregistrement 6 : 01//04/2007
|
| ...par exemple.
|
| A l'aide d'un bouton de commande, je souhaite que l'utilisateur puisse
| saisir dans une inputBox une date de début , puis dans une seconde
inputBox
| une date de fin (ça, je sais faire) mais qu'ensuite le focus se déplace
dans
| le formulaire sur le premier enregistrement contenant "date de début"
et
| qu'avec un second bouton de commande on puisse faire défiler toutes les
| occurences du champ "Date" qui sont > ou = à la valeur de "date de
début
| et < ou = à la valeur de "date de fin" saisies dans les InputBox , mais
| uniquement celles-ci (et ça, je ne sais pas faire.). S'ajoute à cela la
| gestion des erreurs lorsque l'on a atteint la dernière occurence ou que
la
| plage de dates saisie n'existe pas...
|
| Par rapport à mon exemple, si je saisis dans "date de début" 29/03/2007
et
| 31/03/2007 dans "date de fin", il faudrait que le focus aille sur le
champ
| "date" de l'enregistrement 3, puis en cliquant sur un bouton "Suivant",
| qu'on passe à l'enregistrement 4, puis au 5, et qu'enfin, si on clique
| encore sur le bouton "Suivant", une msgBox affiche un message du style
"Il
| n'y a plus de date correspondant à votre recherche".
|
| Merci d'avance pour votre aide.
|
| Dominique.
|
|
|
|
|
|
|
|








Publicité
Poster une réponse
Anonyme