Help pour un script
hamid-ma
Messages postés
19
Statut
Membre
-
hamid-ma Messages postés 19 Statut Membre -
hamid-ma Messages postés 19 Statut Membre -
bonjour, svp quelqu'un peut m explique a quoi il sert se script ..
-------------------------------------------------------------------------------------------
Public Function DayOfYear(ByVal year As Integer, ByVal month As Integer, ByVal day As Integer) As Integer
Dim x As Integer
Dim monthday() As Integer = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}
x = monthday(month - 1) + day
If ((year Mod 4 = 0) And ((year Mod 100.0! = 0) Or (year Mod 400 = 0)) And (month > 2)) Then
x = x + 1
End If
DayOfYear = x
End Function
------------------------------------------------------------------------------------------
merci d avance
-------------------------------------------------------------------------------------------
Public Function DayOfYear(ByVal year As Integer, ByVal month As Integer, ByVal day As Integer) As Integer
Dim x As Integer
Dim monthday() As Integer = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}
x = monthday(month - 1) + day
If ((year Mod 4 = 0) And ((year Mod 100.0! = 0) Or (year Mod 400 = 0)) And (month > 2)) Then
x = x + 1
End If
DayOfYear = x
End Function
------------------------------------------------------------------------------------------
merci d avance
1 réponse
-
Bonjour,
Cette fonction est sensée calculer le nombre de jours écoulés à une date donnée. Mais le resultat est faux pour une année bissextile.
DayOfYear(2016,2,29) donne 60
DayOfYear(2016,3,1) donne 60 aussi alors que 31+29+1=61
A revoir-
-
Bonjour Mosca merci pour votre réponse mais je n'arrive pas à comprendre votre, en fait vous avez changer quoi
PS: je ne suis un expert en VBA- C'est juste plus une question de syntaxe que de logique
year Mod 100.0! = 0
cette expression est sensée vouloir dire : le reste de la division entière de year par 100 est différent de zero.
en VB ou VBA ça s'écrit: year Mod 100 <> 0
ou encore Not (year Mod 100 = 0)
Le signe != est utilé en C; C++ ; Java
L'équivalent en VB est <>
De plus l'initialisation du tableau monthday() est incorrecte
Voilà la correction:
Option Explicit
Public Function DayOfYear(ByVal year As Integer, ByVal month As Integer, ByVal day As Integer) As Integer
Dim x As Integer
Dim monthday() As Variant
monthday = Array(0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)
x = monthday(month - 1) + day
'MsgBox (year Mod 4 = 0) And (year Mod 100 = 0) And (year Mod 400 = 0)
If ((year Mod 4 = 0) And (Not (year Mod 100 = 0) Or (year Mod 400 = 0)) And (month > 2)) Then
x = x + 1
End If
DayOfYear = x
End Function
Sub test()
MsgBox DayOfYear(2016, 3, 1) 'annee bissextile
MsgBox DayOfYear(2015, 3, 1) 'annee non bissextile
End Sub
Colle ce code dans un module et exécutes test, sauf erreur ça devrait marcher
-
-