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

Vérifier la présence d'un mois

42 réponses
Avatar
Hervé DUCARNE
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois d'août
et compris dans la période, le décompter (la période peut aller, allez on va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !

10 réponses

1 2 3 4 5
Avatar
Jessy Sempere [MVP]
Bonjour

Utilises ce bout de code, tu le mets dans un module standard
de ta base, ensuite tu peux l'appeler comme n'importe quelle
fonction d'access, depuis une requête, un formulaire, une macro
ou autre :

***********************************************
Function NbMonth(dtDeb As Date, dtFin As Date)

Dim i%, dt As Date
Dim nbAugust As Integer

For i = Year(dtDeb) To Year(dtFin)
dt = CDate("01/08/" & i)
If dt > dtDeb And dt < dtFin Then nbAugust = nbAugust + 1
Next
NbMonth = DateDiff("m", dtDeb, dtFin) - nbAugust

End Function
***********************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
#Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et
je

commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois d'août
et compris dans la période, le décompter (la période peut aller, allez on
va

dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !




Avatar
Hervé DUCARNE
Merci beaucoup,
mais je fais comment pour l'appeler depuis mes requête ?
mes requête car il faut que je calcule le nombre de mesures pour lesquelles
la durée est comprise entre 0 et 2 mois, entre 3 et 5 mois......
mes champs sont : date_debut_suivi et date_fin_suivi

Merci encore !

"Jessy Sempere [MVP]" a écrit dans le message de
news:41da4d56$
Bonjour

Utilises ce bout de code, tu le mets dans un module standard
de ta base, ensuite tu peux l'appeler comme n'importe quelle
fonction d'access, depuis une requête, un formulaire, une macro
ou autre :

***********************************************
Function NbMonth(dtDeb As Date, dtFin As Date)

Dim i%, dt As Date
Dim nbAugust As Integer

For i = Year(dtDeb) To Year(dtFin)
dt = CDate("01/08/" & i)
If dt > dtDeb And dt < dtFin Then nbAugust = nbAugust + 1
Next
NbMonth = DateDiff("m", dtDeb, dtFin) - nbAugust

End Function
***********************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
#Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et
je

commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller, allez
on


va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !








Avatar
Jessy Sempere [MVP]
Re,

Ben tu l'appelles comme n'importe quelle fonction d'access...

Select Champ1, Champ2, nbMonth(date_debut_suivi,date_fin_suivi) as NbMois
From TaTable;

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Merci beaucoup,
mais je fais comment pour l'appeler depuis mes requête ?
mes requête car il faut que je calcule le nombre de mesures pour
lesquelles

la durée est comprise entre 0 et 2 mois, entre 3 et 5 mois......
mes champs sont : date_debut_suivi et date_fin_suivi

Merci encore !

"Jessy Sempere [MVP]" a écrit dans le message
de

news:41da4d56$
Bonjour

Utilises ce bout de code, tu le mets dans un module standard
de ta base, ensuite tu peux l'appeler comme n'importe quelle
fonction d'access, depuis une requête, un formulaire, une macro
ou autre :

***********************************************
Function NbMonth(dtDeb As Date, dtFin As Date)

Dim i%, dt As Date
Dim nbAugust As Integer

For i = Year(dtDeb) To Year(dtFin)
dt = CDate("01/08/" & i)
If dt > dtDeb And dt < dtFin Then nbAugust = nbAugust + 1
Next
NbMonth = DateDiff("m", dtDeb, dtFin) - nbAugust

End Function
***********************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
#Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème,
et



je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller, allez
on


va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !












Avatar
Hervé DUCARNE
Putain ça tourne nickel !!!!!!!!!!!!!!!!!!!
Mille mercis, tu ne peux pas savoir quel temps tu me fais gagner !!

MERCI MERCI MERCI MERCI !

@+


"Jessy Sempere [MVP]" a écrit dans le message de
news:41da605d$
Re,

Ben tu l'appelles comme n'importe quelle fonction d'access...

Select Champ1, Champ2, nbMonth(date_debut_suivi,date_fin_suivi) as NbMois
From TaTable;

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Merci beaucoup,
mais je fais comment pour l'appeler depuis mes requête ?
mes requête car il faut que je calcule le nombre de mesures pour
lesquelles

la durée est comprise entre 0 et 2 mois, entre 3 et 5 mois......
mes champs sont : date_debut_suivi et date_fin_suivi

Merci encore !

"Jessy Sempere [MVP]" a écrit dans le
message


de
news:41da4d56$
Bonjour

Utilises ce bout de code, tu le mets dans un module standard
de ta base, ensuite tu peux l'appeler comme n'importe quelle
fonction d'access, depuis une requête, un formulaire, une macro
ou autre :

***********************************************
Function NbMonth(dtDeb As Date, dtFin As Date)

Dim i%, dt As Date
Dim nbAugust As Integer

For i = Year(dtDeb) To Year(dtFin)
dt = CDate("01/08/" & i)
If dt > dtDeb And dt < dtFin Then nbAugust = nbAugust + 1
Next
NbMonth = DateDiff("m", dtDeb, dtFin) - nbAugust

End Function
***********************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
#Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce
problème,




et
je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller,
allez




on
va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais
je




n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !
















Avatar
Jessy Sempere [MVP]
Re,

Putain ça tourne nickel !!!!!!!!!!!!!!!!!!!
Mille mercis, tu ne peux pas savoir quel temps tu me fais gagner !!
MERCI MERCI MERCI MERCI !


Ta joie fait plaisir à voir en tous cas... ;-)))
Pas de problème @+
--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------

Avatar
Hervé DUCARNE
Bon, ça marche mais y'a un ptit hic !
J'essaie de mettre ma condition (>=0 et <=2) j'ai la boîte de dialogue qui
me dit 'cette expression présente une syntaxe incorrecte est trop complexe,
blablabla...'
Bon, je me dit qu'il ne veut pas de condition sur la fonction.
Alors je crée une première requête avec la clé primaire de la table, et le
champ qui fait appel à la fonction.
Quand j'exécute cette requête, j'ai bien l'id et le nombre de mois.
Je crée une seconde requête avec pour source la première requête.
Je mets l'opération 'compte' sur l'id, et quand je mets comme critère une
valeur numérique (ou mes < >), il me transforme ça en texte (il me rajoute
des ").
Evidemment la même boite de dialogue réapparait...
Dans la première requête j'ai mis le champ qui fait appel à la fonction en
fixe, mais ça ne change rien...

Je ne sais pas si j'ai été clair, mais si qq1 pouvait me dépatouiller encore
une fois, ça serait cool.

Merci d'avance et @+


"Hervé DUCARNE" a écrit dans le message de
news:%23Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et
je

commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois d'août
et compris dans la période, le décompter (la période peut aller, allez on
va

dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !




Avatar
Jessy Sempere [MVP]
Re,

Je n'ai pas de problème chez moi, ça marche bien...
Quel est ton code SQL pour vérifier la synthaxe
(celui de la première qui déconnait) ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Bon, ça marche mais y'a un ptit hic !
J'essaie de mettre ma condition (>=0 et <=2) j'ai la boîte de dialogue qui
me dit 'cette expression présente une syntaxe incorrecte est trop
complexe,

blablabla...'
Bon, je me dit qu'il ne veut pas de condition sur la fonction.
Alors je crée une première requête avec la clé primaire de la table, et le
champ qui fait appel à la fonction.
Quand j'exécute cette requête, j'ai bien l'id et le nombre de mois.
Je crée une seconde requête avec pour source la première requête.
Je mets l'opération 'compte' sur l'id, et quand je mets comme critère une
valeur numérique (ou mes < >), il me transforme ça en texte (il me rajoute
des ").
Evidemment la même boite de dialogue réapparait...
Dans la première requête j'ai mis le champ qui fait appel à la fonction en
fixe, mais ça ne change rien...

Je ne sais pas si j'ai été clair, mais si qq1 pouvait me dépatouiller
encore

une fois, ça serait cool.

Merci d'avance et @+


"Hervé DUCARNE" a écrit dans le message de
news:%23Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème, et
je

commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller, allez
on


va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !








Avatar
Hervé DUCARNE
Merci,

tiens voila la requête :
SELECT Count(foyer.ci_foyer) AS CompteDeci_foyer
FROM foyer
WHERE (((nbmonth([date_commission],[date_debut_suivi]))>=0 And
(nbmonth([date_commission],[date_debut_suivi]))<=2))
GROUP BY foyer.code_utilisateur
HAVING (((foyer.code_utilisateur) Like
[forms]![choix_utilisateur]![texte7]));

@+


"Jessy Sempere [MVP]" a écrit dans le message de
news:41da7186$
Re,

Je n'ai pas de problème chez moi, ça marche bien...
Quel est ton code SQL pour vérifier la synthaxe
(celui de la première qui déconnait) ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Bon, ça marche mais y'a un ptit hic !
J'essaie de mettre ma condition (>=0 et <=2) j'ai la boîte de dialogue
qui


me dit 'cette expression présente une syntaxe incorrecte est trop
complexe,

blablabla...'
Bon, je me dit qu'il ne veut pas de condition sur la fonction.
Alors je crée une première requête avec la clé primaire de la table, et
le


champ qui fait appel à la fonction.
Quand j'exécute cette requête, j'ai bien l'id et le nombre de mois.
Je crée une seconde requête avec pour source la première requête.
Je mets l'opération 'compte' sur l'id, et quand je mets comme critère
une


valeur numérique (ou mes < >), il me transforme ça en texte (il me
rajoute


des ").
Evidemment la même boite de dialogue réapparait...
Dans la première requête j'ai mis le champ qui fait appel à la fonction
en


fixe, mais ça ne change rien...

Je ne sais pas si j'ai été clair, mais si qq1 pouvait me dépatouiller
encore

une fois, ça serait cool.

Merci d'avance et @+


"Hervé DUCARNE" a écrit dans le message de
news:%23Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce problème,
et



je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller, allez
on


va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais je
n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !












Avatar
Jessy Sempere [MVP]
Re,

Alors est ce que les champs date_commission et date_debut_suivi
font bien parti de la table foyer ?
Ensuite vu que tu as une la ligne Having..., tu devrais avoir logiquement
le champ [foyer].[code_utilisateur] dans ton select sinon ça ne peut pas
marcher...

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
eHT$
Merci,

tiens voila la requête :
SELECT Count(foyer.ci_foyer) AS CompteDeci_foyer
FROM foyer
WHERE (((nbmonth([date_commission],[date_debut_suivi]))>=0 And
(nbmonth([date_commission],[date_debut_suivi]))<=2))
GROUP BY foyer.code_utilisateur
HAVING (((foyer.code_utilisateur) Like
[forms]![choix_utilisateur]![texte7]));

@+


"Jessy Sempere [MVP]" a écrit dans le message
de

news:41da7186$
Re,

Je n'ai pas de problème chez moi, ça marche bien...
Quel est ton code SQL pour vérifier la synthaxe
(celui de la première qui déconnait) ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Bon, ça marche mais y'a un ptit hic !
J'essaie de mettre ma condition (>=0 et <=2) j'ai la boîte de dialogue
qui


me dit 'cette expression présente une syntaxe incorrecte est trop
complexe,

blablabla...'
Bon, je me dit qu'il ne veut pas de condition sur la fonction.
Alors je crée une première requête avec la clé primaire de la table,
et



le
champ qui fait appel à la fonction.
Quand j'exécute cette requête, j'ai bien l'id et le nombre de mois.
Je crée une seconde requête avec pour source la première requête.
Je mets l'opération 'compte' sur l'id, et quand je mets comme critère
une


valeur numérique (ou mes < >), il me transforme ça en texte (il me
rajoute


des ").
Evidemment la même boite de dialogue réapparait...
Dans la première requête j'ai mis le champ qui fait appel à la
fonction



en
fixe, mais ça ne change rien...

Je ne sais pas si j'ai été clair, mais si qq1 pouvait me dépatouiller
encore

une fois, ça serait cool.

Merci d'avance et @+


"Hervé DUCARNE" a écrit dans le message de
news:%23Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce
problème,




et
je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le mois
d'août


et compris dans la période, le décompter (la période peut aller,
allez




on
va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même, mais
je




n'arrive pas à différencier tous les cas possibles à cause de cette
possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !
















Avatar
Hervé DUCARNE
"Jessy Sempere [MVP]" a écrit dans le message de
news:41da755e$
Re,

Alors est ce que les champs date_commission et date_debut_suivi
font bien parti de la table foyer ?
OUI


Ensuite vu que tu as une la ligne Having..., tu devrais avoir logiquement
le champ [foyer].[code_utilisateur] dans ton select sinon ça ne peut pas
marcher...


Je pense que ça devrait marcher, il n'est pas dans le select car j'ai pas
besoin de le faire apparaître, il me faut juste le nombre de foyers.
Bizarrement, en enlevant ce champ (code_utilisateur) dans la requête, je
n'ai plus la même erreur :
Type de données icompatible dans l'expression du critère.
Je pense donc qu'Access me renvoie le résultat de la fonction dans un format
non numérique...

Merci.


--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:
eHT$
Merci,

tiens voila la requête :
SELECT Count(foyer.ci_foyer) AS CompteDeci_foyer
FROM foyer
WHERE (((nbmonth([date_commission],[date_debut_suivi]))>=0 And
(nbmonth([date_commission],[date_debut_suivi]))<=2))
GROUP BY foyer.code_utilisateur
HAVING (((foyer.code_utilisateur) Like
[forms]![choix_utilisateur]![texte7]));

@+


"Jessy Sempere [MVP]" a écrit dans le
message


de
news:41da7186$
Re,

Je n'ai pas de problème chez moi, ça marche bien...
Quel est ton code SQL pour vérifier la synthaxe
(celui de la première qui déconnait) ?

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Hervé DUCARNE" a écrit dans le message news:

Bon, ça marche mais y'a un ptit hic !
J'essaie de mettre ma condition (>=0 et <=2) j'ai la boîte de
dialogue




qui
me dit 'cette expression présente une syntaxe incorrecte est trop
complexe,

blablabla...'
Bon, je me dit qu'il ne veut pas de condition sur la fonction.
Alors je crée une première requête avec la clé primaire de la table,
et



le
champ qui fait appel à la fonction.
Quand j'exécute cette requête, j'ai bien l'id et le nombre de mois.
Je crée une seconde requête avec pour source la première requête.
Je mets l'opération 'compte' sur l'id, et quand je mets comme
critère




une
valeur numérique (ou mes < >), il me transforme ça en texte (il me
rajoute


des ").
Evidemment la même boite de dialogue réapparait...
Dans la première requête j'ai mis le champ qui fait appel à la
fonction



en
fixe, mais ça ne change rien...

Je ne sais pas si j'ai été clair, mais si qq1 pouvait me
dépatouiller




encore
une fois, ça serait cool.

Merci d'avance et @+


"Hervé DUCARNE" a écrit dans le message de
news:%23Gy$
Salut !
Bon, ça fait +sieurs heures que je me casse la tête avec ce
problème,




et
je
commence à chauffer...
Voici mon problème.
Je dois calculer le nombre de mois entre deux date, mais si le
mois





d'août
et compris dans la période, le décompter (la période peut aller,
allez




on
va
dire 3 années maxi je pense).
Tout ça, je dois le vérifier dans une requête (plusieurs même,
mais





je
n'arrive pas à différencier tous les cas possibles à cause de
cette





possibilité de multi année)
Quelqu'un a déjà solutionner ce genre de truc ?
Merci !




















1 2 3 4 5