Nb jour dans un mois

Le
[aicfr]
Bonjour,

Existe t il une fonction en vba qui permet de connaitre le nombre de jour
d'un mois d'une date donnée sans passer par des CASE.

Cordialement,
aicfr
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ng
Le #14756461
Salut,

Tu peux essayer quelque chose comme ça :

Public Function NbJourDsMois(intMois As Integer, intAnnee As Integer) As
Integer
NbJourDsMois = CInt(IsDate("29/" & intMois & "/" & intAnnee)) * -1 + _
CInt(IsDate("30/" & intMois & "/" & intAnnee)) * -1 + _
CInt(IsDate("31/" & intMois & "/" & intAnnee)) * -1 + 28
End Function

Debug.Print NbJourDsMois(2,2004) '//Donne 29

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

[aicfr]
Bonjour,

Existe t il une fonction en vba qui permet de connaitre le nombre de
jour d'un mois d'une date donnée sans passer par des CASE.

Cordialement,
aicfr


Ludovic SOEUR
Le #14756441
J'ai une idée à te proposer qui se sert de la réprésentation d'une date. Une
petite soustraction permet de retrouver le nmobre de jours par mois

Private Function nombreJours(ByVal mois As Integer, ByVal annee As Integer)
As Integer
nombreJours = 32 - Day(CDate("28/" & mois & "/" & annee) + 4)
End Function

et l'utilisation se ferait par MsgBox nombreJours(3, 2003) pour avoir le
nombre de jours de mars 2003
ou MsgBox nombreJours(2, 2001) pour avoir le nombre de jours de février 2001


"[aicfr]" c751d0$jeh$
Bonjour,

Existe t il une fonction en vba qui permet de connaitre le nombre de jour
d'un mois d'une date donnée sans passer par des CASE.

Cordialement,
aicfr




Vincent Guichard
Le #14756431
[aicfr] a écrit :
Bonjour,

Existe t il une fonction en vba qui permet de connaitre le nombre de jour
d'un mois d'une date donnée sans passer par des CASE.

Cordialement,
aicfr




public Function NbreJour(mois As Integer, annee As Integer) As Integer
NbreJour = Day(DateAdd("d", DateAdd("m", 1, DateSerial(annee, mois,
1)), -1))
End Function

Vincent Guichard
le_troll
Le #14756421
Bonjour,
Ce n'est pas pour te contredir, mais si tu mets d'office M = 31 jour, ça te
fait 7 lignes de code:

J = 31
if M= 2 then ' fevrier
J(
if reste A mod 4 <> 0 then J) ' année bissextiles non séculaire 29
if reste = 0 and val(mid(ANNEE(format,"0000"),3,2)) = 0 then M( '
année séculaires bixxextile(
endif
if M = 4 or M=6 or M= 9 or M= 11 then J0

--
Merci, @+, bye, Joe

------------------------------------------
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"ng"
Salut,

Tu peux essayer quelque chose comme ça :

Public Function NbJourDsMois(intMois As Integer, intAnnee As Integer) As
Integer
NbJourDsMois = CInt(IsDate("29/" & intMois & "/" & intAnnee)) * -1 + _
CInt(IsDate("30/" & intMois & "/" & intAnnee)) * -1 + _
CInt(IsDate("31/" & intMois & "/" & intAnnee)) * -1 + 28
End Function

Debug.Print NbJourDsMois(2,2004) '//Donne 29

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

[aicfr]
> Bonjour,
>
> Existe t il une fonction en vba qui permet de connaitre le nombre de
> jour d'un mois d'une date donnée sans passer par des CASE.
>
> Cordialement,
> aicfr




ng
Le #14756411
Salut,
Je ne vois pas en quoi cela me contredit ? Car mon code tiens en une ligne
(mais n'est certes pas forcément optimisé, cf la réponse des autres).


--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

le_troll
Bonjour,
Ce n'est pas pour te contredir, mais si tu mets d'office M = 31 jour,
ça te fait 7 lignes de code:

J = 31
if M= 2 then ' fevrier
J(
if reste A mod 4 <> 0 then J) ' année bissextiles non
séculaire = 29
if reste = 0 and val(mid(ANNEE(format,"0000"),3,2)) = 0 then
M( ' année séculaires bixxextile(
endif
if M = 4 or M=6 or M= 9 or M= 11 then J0


"ng"
Salut,

Tu peux essayer quelque chose comme ça :

Public Function NbJourDsMois(intMois As Integer, intAnnee As
Integer) As Integer
NbJourDsMois = CInt(IsDate("29/" & intMois & "/" & intAnnee)) * -1 +
_ CInt(IsDate("30/" & intMois & "/" & intAnnee)) * -1
+ _ CInt(IsDate("31/" & intMois & "/" & intAnnee)) *
-1 + 28
End Function

Debug.Print NbJourDsMois(2,2004) '//Donne 29

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
http://apisvb.europe.webmatrixhosting.net/

[aicfr]
Bonjour,

Existe t il une fonction en vba qui permet de connaitre le nombre de
jour d'un mois d'une date donnée sans passer par des CASE.

Cordialement,
aicfr






[aicfr]
Le #14756401
Merci bien, cette fonction marche vraiment bien
++
aicfr

"Vincent Guichard" news:c754i2$kjt$
[aicfr] a écrit :
> Bonjour,
>
> Existe t il une fonction en vba qui permet de connaitre le nombre de


jour
> d'un mois d'une date donnée sans passer par des CASE.
>
> Cordialement,
> aicfr
>
>
public Function NbreJour(mois As Integer, annee As Integer) As Integer
NbreJour = Day(DateAdd("d", DateAdd("m", 1, DateSerial(annee, mois,
1)), -1))
End Function

Vincent Guichard



Zoury
Le #14756331
Salut Vincent! :O)

tu peux éviter l'utlisation de la fonction DateAdd() dans ton code en
modifiant légèrement les paramètres passé à DateSerial()..

'***
Private Function MonthDayCount(ByRef lYear As Long, ByRef lMonth As Long)
MonthDayCount = Day(DateSerial(lYear, lMonth + 1, 0))
End Function
'***

en passant 0 pour le jour, DateSerial() va automatiquement cherché la
dernière journée du mois précédent.


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Vincent Guichard
Le #14756241
Zoury a écrit :
Salut Vincent! :O)

tu peux éviter l'utlisation de la fonction DateAdd() dans ton code en
modifiant légèrement les paramètres passé à DateSerial()..

'***
Private Function MonthDayCount(ByRef lYear As Long, ByRef lMonth As Long)
MonthDayCount = Day(DateSerial(lYear, lMonth + 1, 0))
End Function
'***

en passant 0 pour le jour, DateSerial() va automatiquement cherché la
dernière journée du mois précédent.




C'est vrai... J'airai du relire la doc de DateSerial avant de poster mon
code...

Beau travail.

Vincent Guichard
Publicité
Poster une réponse
Anonyme