Operations avec les dates

Le
Superman
Bonjour,

Je trouve l'emploi des dates assez compliqué.
Je vous explique mon probleme avec un exemple :

1 /
date_actuelle = 19/06/2007
avec la date actuelle il faut que je trouve le premier du mois
auparavant c'est à dire dans mon exemple :
date_min = 01/05/2007

2 /
une fonction qui me permetrait de voir si une date est plus grande que
une autre

3 /
Récupere l'ensemble des jours (jour par jour entre deux dates)
exemple :
10/06/2007-->19/06/2007
il me faudrait
10/06/2007
11/06/2007
12/06/2007
13/06/2007.

Merci encore de votre aide !

Maxime
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15400521
Superman wrote:
Bonjour,



Hello,


Je trouve l'emploi des dates assez compliqué.
Je vous explique mon probleme avec un exemple :



Mais non :-) Il suffit de connaitre les fonctions magiques!


1 /
date_actuelle = 19/06/2007
avec la date actuelle il faut que je trouve le premier du mois
auparavant c'est à dire dans mon exemple :
date_min = 01/05/2007



Tout simple avec la fonction dateAdd:

Public Function GetFirstDayPrevMonth(ByVal d As Date) As Date
Dim tmpd As Date
Dim dec As Integer

tmpd = DateAdd("m", -1, d)
dec = Day(tmpd)
GetFirstDayPrevMonth = DateAdd("d", -dec + 1, tmpd)

End Function

Et pour l'utiliser:

Dim dd1 As Date
Dim dd As Date

dd1 = "20/05/2007"
dd = GetFirstDayPrevMonth(dd1)

et dd vaudra : "01/04/2007"


2 /
une fonction qui me permetrait de voir si une date est plus grande que
une autre



Ca, c'est trivial avec DateDiff:


Public Function CompareDate(ByVal d1 As Date, d2 As Date) As Long

CompareDate = DateDiff("d", d1, d2)

End Function

Si la fonction retourne un nombre positif, alors la date d1 est plus grande
que d2.


3 /
Récupere l'ensemble des jours (jour par jour entre deux dates)
exemple :
10/06/2007----->19/06/2007
il me faudrait
10/06/2007
11/06/2007
12/06/2007
13/06/2007....

Merci encore de votre aide !

Maxime




Ca c'est trivial aussi avec DateAdd


Dim dd2 As Date
Dim dd1 As Date
Dim dd As Date

dd1 = "20/05/2007"
dd2 = "29/5/2007"

dd = dd1
While DateDiff("d", dd, dd2) >= 0
Debug.Print dd
dd = DateAdd("d", 1, dd)

Wend

Et ca imprime:

20/05/2007
21/05/2007
22/05/2007
23/05/2007
24/05/2007
25/05/2007
26/05/2007
27/05/2007
28/05/2007
29/05/2007

Tout simple :-)

Je te conseille l'excellent article (ouille, mes chevilles!):
http://faq.vb.free.fr/index.php?question4

Ne pas oublier de fréquenter notre FAQ:
http://faq.vb.free.fr/


Tu y trouveras de très nombreuses réponses :-)


Cordialement :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Jean-Marc
Le #15400511
Superman wrote:
Bonjour,



Hello,


Je trouve l'emploi des dates assez compliqué.
Je vous explique mon probleme avec un exemple :



Mais non :-) Il suffit de connaitre les fonctions magiques!


1 /
date_actuelle = 19/06/2007
avec la date actuelle il faut que je trouve le premier du mois
auparavant c'est à dire dans mon exemple :
date_min = 01/05/2007



Tout simple avec la fonction dateAdd:

Public Function GetFirstDayPrevMonth(ByVal d As Date) As Date
Dim tmpd As Date
Dim dec As Integer

tmpd = DateAdd("m", -1, d)
dec = Day(tmpd)
GetFirstDayPrevMonth = DateAdd("d", -dec + 1, tmpd)

End Function

Et pour l'utiliser:

Dim dd1 As Date
Dim dd As Date

dd1 = "20/05/2007"
dd = GetFirstDayPrevMonth(dd1)

et dd vaudra : "01/04/2007"


2 /
une fonction qui me permetrait de voir si une date est plus grande que
une autre



Ca, c'est trivial avec DateDiff:


Public Function CompareDate(ByVal d1 As Date, d2 As Date) As Long

CompareDate = DateDiff("d", d1, d2)

End Function

Si la fonction retourne un nombre positif, alors la date d1 est plus
grande
que d2.


3 /
Récupere l'ensemble des jours (jour par jour entre deux dates)
exemple :
10/06/2007----->19/06/2007
il me faudrait
10/06/2007
11/06/2007
12/06/2007
13/06/2007....

Merci encore de votre aide !

Maxime




Ca c'est trivial aussi avec DateAdd


Dim dd2 As Date
Dim dd1 As Date
Dim dd As Date

dd1 = "20/05/2007"
dd2 = "29/5/2007"

dd = dd1
While DateDiff("d", dd, dd2) >= 0
Debug.Print dd
dd = DateAdd("d", 1, dd)

Wend

Et ca imprime:

20/05/2007
21/05/2007
22/05/2007
23/05/2007
24/05/2007
25/05/2007
26/05/2007
27/05/2007
28/05/2007
29/05/2007

Tout simple :-)

Je te conseille l'excellent article (ouille, mes chevilles!):
http://faq.vb.free.fr/index.php?question4

Ne pas oublier de fréquenter notre FAQ:
http://faq.vb.free.fr/


Tu y trouveras de très nombreuses réponses :-)


Cordialement :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Superman
Le #15400491
Rien a dire sauf merci....
Publicité
Poster une réponse
Anonyme