Nombre de jours du mois.

alikote Messages postés 6 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 13 février 2006 - 5 août 2005 à 22:42
alikote Messages postés 6 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 13 février 2006 - 8 août 2005 à 19:51
Je vous salue tous,

Voilà j'aime écrire des choses en VBA (Excel et/ou Word). J'ai besoin d'une procédure (ou méthode) ou fonction qui puisse me dire exactement le nombre de jours dans un certain mois d'une certaine année. J'en ai besoin dans une macro Excel.

Quelqu'un a du se frotter déjà à ce problème, j'en suis presque sûre.

Merci de votre réaction.

8 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
5 août 2005 à 23:00
Dim année As Integer

Dim mois As Integer



mois = 8

année = 2005



MsgBox (DateSerial(année, mois + 1, 1) - DateSerial(année, mois, 1))


Daniel
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
5 août 2005 à 23:07
Voici 4 fonctions qui permettent de connaître le nombre de jours d'un mois.
A vous de choisir celle qui vous convient le mieux :





Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear
As Integer) As Integer





DaysInMonth = Day(DateAdd("d", -1, DateAdd("m",
1, DateSerial(nYear, nMonth, 1))))





End Function





Public Function DaysInMonth(ByVal nMonth As Integer, ByVal nYear As Integer) As
Integer





DaysInMonth = Day(DateSerial(nYear, nMonth + 1, 0))





End Function





Public Function DaysInMonth(ByVal nMonth As Integer, ByVal
nYear As Integer) As Integer





If nMonth = 12 Then


DaysInMonth = Day(DateSerial(nYear +
1, 1, 1) - 1)


Else


DaysInMonth = Day(DateSerial(nYear,
nMonth + 1, 1) - 1)


End If





End Function





Public Function DaysInMonth(ByVal nMonth As Long, ByVal nYear As Long) As Long





Select Case nMonth


Case 2


If isLeapYear(nYear)
Then



DaysInMonth = 29


Else



DaysInMonth = 28


End If


Case 4, 6, 9, 11


DaysInMonth =
30


Case Else


DaysInMonth =
31


End Select





End Function




*************

bibliographie : http://faq.vb.free.fr/index.php?question=84
PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
0
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
5 août 2005 à 23:08
la bonne vieille méthode. Marche toujours, n'importe quel année, n'importe quel mois, bisextile ou non

public function nbJourMois(mois as integer, annee as integer) as integer
return nbJourMois(mois,annee,31)
end function

private function nbJourMois(mois as integer, annee as integer, jour as integer) as integer
on error goto erreur
dim test as date
test = annee & "-" & mois & "-" & jour
nbJourMois = jour
exit function
erreur:
nbJourMois = nbJourMois(mois,annee,jour-1)
end function


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
5 août 2005 à 23:26
Salut
Oui, en effet, c'est excellent cette idée Dragon.
Il y a aussi la méthode qui consiste à regarder le n° du jour qui précède le 1er jour du mois suivant.


Je crois que c'est ce que propose <STRIKE>Gollibot</STRIKE>, Gobillot, pardon

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_dragon Messages postés 2336 Date d'inscription samedi 14 juillet 2001 Statut Membre Dernière intervention 5 mai 2009 6
5 août 2005 à 23:47
l'avantage de ma version, c,est qu'elle peut-être adapter dasn tout les languages. Une date fausse va nécessairement planter. donc si on ajoute la gestion d'erreur avec un on error en vb6.0 ou un try/catch en .net, ca va toujours fonctionner. Mais c,est pas comme qui dirait très propre comme code.

j'ai jamais tester voir si c'était plus rapide par contre. Faudrait tester la solution de drop01 et la mienne genre 100000 fois voir la différence en temps. Par contre, pour un débutant, ma façon est beaucoup plus simple a comprendre, malgré qu'elle soit récurcive (la fonction s'appelle elle même, jusqu'à ce qu'elle aille trouver la bonne réponse)


-------------------------------------------------
Dragon alias aussi Waxime mais bon, pas le gout de refaire un nouveau profil lol
-------------------------------------------------
0
alikote Messages postés 6 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 13 février 2006
6 août 2005 à 12:15
Re-bonjour chers amis,

Merci à vous tous qui avez réagi à ma requête, merci aussi à ceux qui en avaient l'intention. J'ai testé toutes les réponses sur le mois de fév-2005. Elles ont toutes donné la bonne réponse à l'exception de la dernière fonction de frop01. Là j'ai le message qui indique que la fonction isLeapYear(nYear) n'est pas définie. Je pense que cette fonction n'est pas connue de Excel VBA et qu'il faut l'écrire.

Encore merci, la question peut-être close sauf si quelqu'un (en l'occurrence frop01) veut revoir le problème de la fonction isLeapYear(nYear).

Connaître, connaître; toujours connaître, mieux et plus, pour soi et les autres !!!
Ali C. KOTE
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
6 août 2005 à 13:51
j'avais dit 4 fonctions et j'ai pas mis la fontion IsLeapYear.



Sinon pour cette fonction que tu doit la déclarer !!

elle retourne si l'année est bisextile ou non !



peut-etre parcequ'elle manque la valeur de retour (As Boolean):



Public Function isLeapYear(ByVal nYear As Long) As Boolean



isLeapYear ((nYear Mod 4 0) And (nYear Mod 100 <> 0)) Or (nYear Mod 400 = 0)



End Function
PS: Si votre problème est résolu, prière de bien vouloir clôturer votre message par une réponse acceptée !
0
alikote Messages postés 6 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 13 février 2006
8 août 2005 à 19:51
Bonjour,


Je reviens pour cette fois demander ceci:


Je veux créer un fichier d'aide pour une petite application que j'ai écrite en VBA (Excel). J'aimerais avoir une idée de la structure d'un tel fichier et comment je peux y faire référenc à partir de mon application.

Connaître, connaître; toujours connaître, mieux et plus, pour soi et pour les autres !!!
Ali C. KOTE
0
Rejoignez-nous