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

Nb jour dans un mois

8 réponses
Avatar
[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

8 réponses

Avatar
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] 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


Avatar
Ludovic SOEUR
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]" a écrit dans le message de news:
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




Avatar
Vincent Guichard
[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
Avatar
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

--
Merci, @+, bye, Joe

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


"ng" a écrit dans le message de news:

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] 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




Avatar
ng
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 a écrit :

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" a écrit dans le message de news:

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] 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






Avatar
[aicfr]
Merci bien, cette fonction marche vraiment bien
++
aicfr

"Vincent Guichard" a écrit dans le message de
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



Avatar
Zoury
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/
Avatar
Vincent Guichard
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