Jour julien, date julienne

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 004 fois - Téléchargée 36 fois

Contenu du snippet

fonction qui retourne le numéro du jour de l'année.
Peut-être trop simple... mais n'était pas évident.
Cet exemple utilise une fenêtre VB avec 2 zones texte et un bouton.

Source / Exemple :


Private Sub Command1_Click()

On Error Resume Next    ' si format non valide

Text2.Text = ""
' Inscrire dans text1 une date valide
Text2.Text = JourJulien(Text1.Text)
End Sub

' *************************************************
Function JourJulien(dDate As Date) As Integer
Dim oDate As Date

oDate = Left(dDate, 4) & "/01/01"   ' premier jour de l'année
JourJulien = dDate - oDate + 1      ' Le résultat ;)

End Function
' *************************************************

Conclusion :


Le résultat est bon pour toute année, même les années de 366 jours.
Valide pour les formats reconnus , "aaaa/mm/jj", "jj/mm/aaaa" ...
L'idée de base soustraire les dates... ;)
Si cela vous a aidé, svp me l'indiquer. Merci

A voir également

Ajouter un commentaire

Commentaires

Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

Salut,
pour que ça fonctionne j'ai du modifier le code. Je le donne pour RAMANVDA (je sais pas si tu en a encore besoin, mais sinon ça servira pour quelqu'un d'autre):


Public Function JourJulien(dDate As Date) As Integer
Dim oDate As Date

oDate = CDate("01/01/" & Right(CStr(dDate), 4)) ' premier jour de l'année
JourJulien = dDate - oDate + 1 ' Le résultat ;)

End Function


Et avec ça, ça fonctionne super!
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
16 juin 2015

Le text1 (la variable dDate) est stocké de la sorte: "13/01/2003" et non pas "2003/01/13". Surement pb des option régionale.

Ainsi Left(dDate, 4) renvoi "13/0" et non pas "2003" même si je rentre en text1 "2003/01/13"

Il faudrait formater la varible dDate en "yyyy/mm/dd"

Sinon cela m'a aidé à comprendre le système julien donc 10/10 pour la note (je récupérer en Query des dates juliennes sur un AS400)

Pour info voici mon bout de code en VBA (pas VB) pour convertir des dates grégoriennes en Juliennes et inversement (dans le cas de mon AS400):
'-----------------------------------------------
Function DateG(case1 As Range) As Date
Dim oDate As Date
Dim julien As Long
Dim an As String, jour

julien = CLng(case1.Text)

Select Case julien
Case Is >= 100000
an = "20" & Mid(julien, 2, 2)
Case Is < 100000
an = "19" & Mid(julien, 1, 2)
Case Else
DateG = "erreur"
End Select

jour = Right(julien, 3)
oDate = CDate("01/01/" & an)

DateG = oDate + CInt(jour)
End Function

'-----------------------------------------------
Function DateJ(case1 As Range) As Long
Dim oDate As Date
Dim greg As Date
Dim an As String, jour
Dim JourJ As Integer

greg = CDate(case1.Text)

an = Right(greg, 2)

oDate = "01/01/" & an

JourJ = greg - oDate + 1
If JourJ < 100 Then
DateJ = CLng("1" & an & "0" & JourJ)
Else
DateJ = CLng("1" & an & JourJ)
End If
End Function
'-----------------------------------------------
C'est pas top mais ça fonctionne.

Merci à tous! Chaio:!
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
un coup des options régionales, peut être....
Messages postés
50
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
4 novembre 2008

Bonjour ramanvda
Vérifie le résultat de la fonction Left(dDate, 4)
Tu devrais y voir l'année ex.: "2005".
Le principe est de soustraire 2 dates.
Tu peux esseyer en inversant la fonction de date

oDate = "01/01/" & Right(dDate,4)

Écrits tes résultats sur cette page pour le bénéfice de tous.
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
16 juin 2015

Cela ne fonction pas chez moi...Dommage car cela m'aurait bien intéréssé.

Le prog bloque ici:
oDate = Left(dDate, 4) & "/01/01" ' premier jour de l'année

J'ai essayé avec 13/01/2003, 13/01/03, 2003/01/03...rien ne passe.

J'ai essayé cela mais sans résultat:
oDate = CDate(Left(CStr(dDate), 4) & "/01/01") ' premier jour de l'année

help!
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.