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

critères : multiple d'une date

7 réponses
Avatar
Bauwens François
Bonjour,

Tout d'abord, ecxellente année 2007 à tous.

J'ai un petit souci de formulation d'un critère que je souhaite vous
soumettre. J'ai une "date_inscription". Je souhaite selectionner tous les
membres qui sont inscrit depuis 10 ans et ensuite tous les 5 ans (donc 10,
15, 20, 25,...), le problème est que je ne peux pas faire simplement les
multiples de 5 puisque les 5 premières années ne compte pas, ensuite il faut
que se soit une boucle infini de multiples de 5.

Comment puis-je le formuler ?

je pensais faire une première requette : annee (date_inscription)*5 (mais
avec un système de boucle que je n'imagine pas encore, merci pour votre
aide)

et dans une requête de cette requête lui dire de ne pas prendre la valeur
minimum qui sera forcement celle qui sera *5

Pensez-vous que c'est la bonne méthode ?
Pouvez-vous m'aider pour la formulation des critères ?

Merci
Cordialement,
François

7 réponses

Avatar
Eric
Bonjour,

Est ce qu'une fonction comme celle-ci peut te convenir ?
(à copier dans un module global)

Function fnASortir(UneDate) As Boolean
If IsNull(UneDate) Then fnASortir = False: Exit Function
Dim UnNombre As Long
' calcul en tenant compte du jour et mois
UnNombre = DateDiff("yyyy", UneDate, Date) _
+ (Format(Date, "mmdd") < Format(UneDate, "mmdd"))
If UnNombre >= 10 Then
If UnNombre Mod 5 = 0 Then
fnASortir = True
End If
End If
End Function


Dans la requête tu l'utilises ainsi:
A Sortir: fnASortir([date_inscription])

Tu auras la valeur -1 pour tous les enregistrements pour lesquels
l'écart entre la date d'inscription et la date courante est de 10, 15,
20, 25 ... années.

Meilleurs voeux

Bonjour,

Tout d'abord, ecxellente année 2007 à tous.

J'ai un petit souci de formulation d'un critère que je souhaite vous
soumettre. J'ai une "date_inscription". Je souhaite selectionner tous les
membres qui sont inscrit depuis 10 ans et ensuite tous les 5 ans (donc 10,
15, 20, 25,...), le problème est que je ne peux pas faire simplement les
multiples de 5 puisque les 5 premières années ne compte pas, ensuite il faut
que se soit une boucle infini de multiples de 5.

Comment puis-je le formuler ?

je pensais faire une première requette : annee (date_inscription)*5 (mais
avec un système de boucle que je n'imagine pas encore, merci pour votre
aide)

et dans une requête de cette requête lui dire de ne pas prendre la valeur
minimum qui sera forcement celle qui sera *5

Pensez-vous que c'est la bonne méthode ?
Pouvez-vous m'aider pour la formulation des critères ?

Merci
Cordialement,
François




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

Avatar
Pierre CFI [mvp]
bonjour
j'ai plutot l'impression que c'est pour faire des regroupements
-10
11 à 15
16 à 20
un select case sur l'année....
mais attendons les consignes :o))

--
Pierre CFI
MVP Microsoft Access

Site pour bien commencer
Access http://www.mpfa.info

"Eric" a écrit dans le message de news:
Bonjour,

Est ce qu'une fonction comme celle-ci peut te convenir ?
(à copier dans un module global)

Function fnASortir(UneDate) As Boolean
If IsNull(UneDate) Then fnASortir = False: Exit Function
Dim UnNombre As Long
' calcul en tenant compte du jour et mois
UnNombre = DateDiff("yyyy", UneDate, Date) _
+ (Format(Date, "mmdd") < Format(UneDate, "mmdd"))
If UnNombre >= 10 Then
If UnNombre Mod 5 = 0 Then
fnASortir = True
End If
End If
End Function


Dans la requête tu l'utilises ainsi:
A Sortir: fnASortir([date_inscription])

Tu auras la valeur -1 pour tous les enregistrements pour lesquels l'écart entre la date d'inscription et la date courante est de
10, 15, 20, 25 ... années.

Meilleurs voeux

Bonjour,

Tout d'abord, ecxellente année 2007 à tous.

J'ai un petit souci de formulation d'un critère que je souhaite vous
soumettre. J'ai une "date_inscription". Je souhaite selectionner tous les
membres qui sont inscrit depuis 10 ans et ensuite tous les 5 ans (donc 10,
15, 20, 25,...), le problème est que je ne peux pas faire simplement les
multiples de 5 puisque les 5 premières années ne compte pas, ensuite il faut
que se soit une boucle infini de multiples de 5.

Comment puis-je le formuler ?

je pensais faire une première requette : annee (date_inscription)*5 (mais
avec un système de boucle que je n'imagine pas encore, merci pour votre
aide)

et dans une requête de cette requête lui dire de ne pas prendre la valeur
minimum qui sera forcement celle qui sera *5

Pensez-vous que c'est la bonne méthode ?
Pouvez-vous m'aider pour la formulation des critères ?

Merci
Cordialement,
François




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



Avatar
Eric
.../...
Dans la requête tu mets:
A Sortir: fnASortir([date_inscription])


et en critère : True ou -1 ce qui n'affichera que les enregistrements
voulus.

PS: Si tu veux faire le calcul que sur l'année d'inscription, alors tu
remplaces :
UnNombre = DateDiff("yyyy", UneDate, Date) _
+ (Format(Date, "mmdd") < Format(UneDate, "mmdd"))
par :

UnNombre = DateDiff("yyyy", UneDate, Date)

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

Avatar
Eric
Bonjour Pierre,

Ou encore un petit coup de Partition ? mais attendons ...

bonjour
j'ai plutot l'impression que c'est pour faire des regroupements
-10
11 à 15
16 à 20
un select case sur l'année....
mais attendons les consignes :o))



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

Avatar
Bauwens François
Bonjour,

Merci pour votre aide, je vais tenté la mise en place de suite mais à la
lecture ce n'est pas limpide pour moi aussi je risque de revenir vers vous !

Il ne s'agit pas de regrouper les années mais plutôt de repérer les années
"anniversaires" multiples de 5 car elles engendrent de nouvelles démarches
administratives. Un courrier doit être adressé aux personnes répondant au
critère.

Encore merci et bonne journée
François


"Eric" a écrit dans le message de
news:%
.../...
Dans la requête tu mets:
A Sortir: fnASortir([date_inscription])


et en critère : True ou -1 ce qui n'affichera que les enregistrements
voulus.

PS: Si tu veux faire le calcul que sur l'année d'inscription, alors tu
remplaces :
UnNombre = DateDiff("yyyy", UneDate, Date) _
+ (Format(Date, "mmdd") < Format(UneDate, "mmdd"))
par :

UnNombre = DateDiff("yyyy", UneDate, Date)

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



Avatar
Bauwens François
Merci encore tout fonctionne à merveille
Bonne journée


"Eric" a écrit dans le message de
news:%
.../...
Dans la requête tu mets:
A Sortir: fnASortir([date_inscription])


et en critère : True ou -1 ce qui n'affichera que les enregistrements
voulus.

PS: Si tu veux faire le calcul que sur l'année d'inscription, alors tu
remplaces :
UnNombre = DateDiff("yyyy", UneDate, Date) _
+ (Format(Date, "mmdd") < Format(UneDate, "mmdd"))
par :

UnNombre = DateDiff("yyyy", UneDate, Date)

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



Avatar
Eric
Bonsoir François,

Puisqu'apparemment tu as retenu la fonction fnASortir, quelques
explications:
UnNombre donne le nombre d'années entre la date d'inscription et la date
actuelle (date du jour).
On regarde si UnNombre est supérieur ou égale à 10.
Si c'est le cas, la ligne 'If UnNombre Mod 5 = 0 Then' analyse le reste
de la division par 5 de UnNombre.
Si ce reste est égale à 0, alors la fonction fnASortir prend la valeur
TRUE (ou -1), ce qui signifie que l'on a affaire à un multiple de 5 (
soit 10, 15, 20, 25, ..., 85, ...), le cas où UnNombre = 5 ayant été
éliminé au test précédent.
Ce procédé évite ta boucle puisque tu précisais que le nb d'années
écoulées pouvait être 'infini'.

N'étant pas certain que tu voulais uniquement les dates(années)
anniversaires supérieures ou égales à 10 et multiples de 5, j'avais
shunté les commentaires à tort :-(

Bonjour,

Merci pour votre aide, je vais tenté la mise en place de suite mais à la
lecture ce n'est pas limpide pour moi aussi je risque de revenir vers vous !

Il ne s'agit pas de regrouper les années mais plutôt de repérer les années
"anniversaires" multiples de 5 car elles engendrent de nouvelles démarches
administratives. Un courrier doit être adressé aux personnes répondant au
critère.

Encore merci et bonne journée
François




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