begin process at 2008 07 04 08:38:18
1 204 518 membres
60 nouveaux aujourd'hui
14 116 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

MANIPULER LES DATES ET HEURES (ADDITION ET SOUSTRACTION)


Information sur la source

Catégorie :Date & Heure Niveau : Initié Date de création : 08/05/2002 Date de mise à jour : 08/05/2002 17:07:46 Vu : 36 275

Note :
9,38 / 10 - par 16 personnes
9,38 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (43)
Ajouter un commentaire et/ou une note

Description

'Toutes les actions possibles avec les DATES ET HEURE
'-----------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SOMMAIRE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'1.La fonction DateSerial
'2.La fonction DateValue
'3.Récupération partielle de date
'4.La fonction TimeSerial
'5.Ajouter une valeur à une date ou une heure
'6.Soustraire une valeur à une date ou une heure

'1.LA FONCTION DateSerial
'************************

'La fonction DateSerial renvoie la valeur numérique correspondant à une année, un mois et un 'jour

MaDate.text = DateSerial(Year(Now), Month(Now), Day(Now))




'2.LA FONCTION DateValue
'***********************

'DateValue renvoie une valeur numérique pour un date passé comme chaine de caractère '(String)

MaVariableNumerique = DateValue("12 mai 2002")




'3.RECUPERATION PARTIELLE DE DATE
'********************************

'Le jour, le mois et l'année sont renvoyé par les fonctions Day,Month et Year

'Jour.Text = Day(Now)
'Mois.Text = Month(Now)
'Annee.Text = Year(Now)




'4.LA FONCTION TimeSerial
'************************

'Renvoie la valeur horaire d'une heure, d'une minute et d'une seconde. Les valeurs d'heure 'différents peuvent etres comparées immédiantement, sans les décomposer en heure, minute, 'secondes.

MonHeure.Text = TimeSerial(Hour(Now), Minute(Now), Second(Now))


'5.AJOUTER UNE VALEUR A UNE DATE OU UNE HEURE
'********************************************

'SYNTAXE:

'Resultat.Text = DateAdd(Intervalle, Valeur, Date)

'EXEMPLES:

    'Ajouter 5 mois à la date actuelle
    '---------------------------------

    Resultat.Text = DateAdd("m", 5, Date)

    'Ajouter 10 minutes à l'heure actuelle
    '-------------------------------------

    Resultat.Text = DateAdd("n", 10, Time)


'INTERVALES POSSIBLES:

'*************************************************
'*INTERVALES         *DESCRIPTION            *
'*************************************************
'  aaaa année
'  t trimestre
'  m mois
'  a jour de l'année
'  j jour
'  e jour de la semaine
'  ee   semaine
'  h heure
'  n minute
'  s seconde

'6.SOUSTRAIRE UNE VALEUR A UNE DATE OU UNE HEURE
'***********************************************

Resultat.Text = DateDiff(Intervale, Date1, Date2)

'Pour les intervalles, voir le tableau du n°5


Source

  • 'Toutes les actions possibles avec les DATES ET HEURE
  • '-----------------------------------------------------
  • @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  • SOMMAIRE
  • @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  • '1.La fonction DateSerial
  • '2.La fonction DateValue
  • '3.Récupération partielle de date
  • '4.La fonction TimeSerial
  • '5.Ajouter une valeur à une date ou une heure
  • '6.Soustraire une valeur à une date ou une heure
  • '1.LA FONCTION DateSerial
  • '************************
  • 'La fonction DateSerial renvoie la valeur numérique correspondant à une année, un mois et un 'jour
  • MaDate.text = DateSerial(Year(Now), Month(Now), Day(Now))
  • '2.LA FONCTION DateValue
  • '***********************
  • 'DateValue renvoie une valeur numérique pour un date passé comme chaine de caractère '(String)
  • MaVariableNumerique = DateValue("12 mai 2002")
  • '3.RECUPERATION PARTIELLE DE DATE
  • '********************************
  • 'Le jour, le mois et l'année sont renvoyé par les fonctions Day,Month et Year
  • 'Jour.Text = Day(Now)
  • 'Mois.Text = Month(Now)
  • 'Annee.Text = Year(Now)
  • '4.LA FONCTION TimeSerial
  • '************************
  • 'Renvoie la valeur horaire d'une heure, d'une minute et d'une seconde. Les valeurs d'heure 'différents peuvent etres comparées immédiantement, sans les décomposer en heure, minute, 'secondes.
  • MonHeure.Text = TimeSerial(Hour(Now), Minute(Now), Second(Now))
  • '5.AJOUTER UNE VALEUR A UNE DATE OU UNE HEURE
  • '********************************************
  • 'SYNTAXE:
  • 'Resultat.Text = DateAdd(Intervalle, Valeur, Date)
  • 'EXEMPLES:
  • 'Ajouter 5 mois à la date actuelle
  • '---------------------------------
  • Resultat.Text = DateAdd("m", 5, Date)
  • 'Ajouter 10 minutes à l'heure actuelle
  • '-------------------------------------
  • Resultat.Text = DateAdd("n", 10, Time)
  • 'INTERVALES POSSIBLES:
  • '*************************************************
  • '*INTERVALES *DESCRIPTION *
  • '*************************************************
  • ' aaaa année
  • ' t trimestre
  • ' m mois
  • ' a jour de l'année
  • ' j jour
  • ' e jour de la semaine
  • ' ee semaine
  • ' h heure
  • ' n minute
  • ' s seconde
  • '6.SOUSTRAIRE UNE VALEUR A UNE DATE OU UNE HEURE
  • '***********************************************
  • Resultat.Text = DateDiff(Intervale, Date1, Date2)
  • 'Pour les intervalles, voir le tableau du n°5
'Toutes les actions possibles avec les DATES ET HEURE
'-----------------------------------------------------
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
		SOMMAIRE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'1.La fonction DateSerial
'2.La fonction DateValue
'3.Récupération partielle de date
'4.La fonction TimeSerial
'5.Ajouter une valeur à une date ou une heure
'6.Soustraire une valeur à une date ou une heure

'1.LA FONCTION DateSerial
'************************

'La fonction DateSerial renvoie la valeur numérique correspondant à une année, un mois et un 'jour

MaDate.text = DateSerial(Year(Now), Month(Now), Day(Now))




'2.LA FONCTION DateValue
'***********************

'DateValue renvoie une valeur numérique pour un date passé comme chaine de caractère '(String)

MaVariableNumerique = DateValue("12 mai 2002")




'3.RECUPERATION PARTIELLE DE DATE
'********************************

'Le jour, le mois et l'année sont renvoyé par les fonctions Day,Month et Year

'Jour.Text = Day(Now)
'Mois.Text = Month(Now)
'Annee.Text = Year(Now)




'4.LA FONCTION TimeSerial
'************************

'Renvoie la valeur horaire d'une heure, d'une minute et d'une seconde. Les valeurs d'heure 'différents peuvent etres comparées immédiantement, sans les décomposer en heure, minute, 'secondes.

MonHeure.Text = TimeSerial(Hour(Now), Minute(Now), Second(Now))


'5.AJOUTER UNE VALEUR A UNE DATE OU UNE HEURE
'********************************************

'SYNTAXE:

'Resultat.Text = DateAdd(Intervalle, Valeur, Date)

'EXEMPLES:

    'Ajouter 5 mois à la date actuelle
    '---------------------------------

    Resultat.Text = DateAdd("m", 5, Date)

    'Ajouter 10 minutes à l'heure actuelle
    '-------------------------------------

    Resultat.Text = DateAdd("n", 10, Time)


'INTERVALES POSSIBLES:

'*************************************************
'*INTERVALES         	*DESCRIPTION            *
'*************************************************
'  aaaa			année
'  t			trimestre
'  m			mois
'  a			jour de l'année
'  j			jour
'  e			jour de la semaine
'  ee  			semaine
'  h			heure
'  n			minute
'  s			seconde

'6.SOUSTRAIRE UNE VALEUR A UNE DATE OU UNE HEURE
'***********************************************

Resultat.Text = DateDiff(Intervale, Date1, Date2)

'Pour les intervalles, voir le tableau du n°5


 

Conclusion

Et voilà
  • signaler à un administrateur
    Commentaire de reivon le 08/05/2002 20:27:28

    et bien, t'as l'air d'aimer les dates et heures toi ! merci pour toutes les explications ci-dessus, ca aide

  • signaler à un administrateur
    Commentaire de Magidev le 10/05/2002 15:27:49

    De rien, c'est tout naturel. J'ai aussi fait un tutorial sur le SQL et les bases de donne

  • signaler à un administrateur
    Commentaire de devsurf le 09/05/2003 14:32:40

    T'aurais pa l'heure stp?
    :)
    Trés bien c'est exactement  ce que je cherchais
    Merc

  • signaler à un administrateur
    Commentaire de iurodivi le 22/12/2003 01:10:30

    bien, merci :)

  • signaler à un administrateur
    Commentaire de loopingstar le 01/02/2004 15:15:40

    Bonjour, j'ai un piti souci : Voici un exemple : Comment faire pur enlever "00:03:00" à "15:55:00" ? En fait je voudrai enlever des secondes ou minutes (qui sont sous la forme "hh:mm:ss" à un temps (sous la même forme "hh:mm:ss")
    Merci à vous.

  • signaler à un administrateur
    Commentaire de Magidev le 02/02/2004 09:40:53

    La réponse est dans la source : DateAdd mais avec un nombre négatif au lieu d'un positif

  • signaler à un administrateur
    Commentaire de loopingstar le 02/02/2004 10:16:44

    Oui, sinon il y a cette solution
    text1.text = cdate(cdate("15:55:00") - cdate("00:03:00"))
    Ce qui revient au même mais bon ;)

  • signaler à un administrateur
    Commentaire de hoyo22 le 15/04/2004 18:12:34

    Trop bien cette petite explication.
    C'est bien utile surtout pour un débutant en VB comme moi

  • signaler à un administrateur
    Commentaire de bibilafrayeur le 05/05/2004 16:56:09

    Je vois qu'il y'a des personne qui s'inspirent de la MSDN ;)

    Moi je voudrais convertire un nombre très important de secondes (86500 par exemple) pour me renvoyer un affichage comme ceci :
    Jour/heure/minutes/secondes

    Sais tu comment faire ?

    Merci

  • signaler à un administrateur
    Commentaire de yaumegui le 14/05/2004 15:50:37

    GRAND MERCI au passage !

  • signaler à un administrateur
    Commentaire de yaumegui le 14/05/2004 15:58:52

    GRAND MERCI au passage !

  • signaler à un administrateur
    Commentaire de Egalon le 24/06/2004 10:25:59

    Salut, c'est très pratique tes indications pour la manipulation des date et heures.
    J'ai un petit complément à mettre(parce que j'ai du chercher un peu pour trouver la soluce)

    Comment convertir un SYSTEMTIME en DATE:

    GetLocalTime MyTime

    Dim MyDate
        MyDate = DateSerial(MyTime.wYear, MyTime.wMonth, MyTime.wDay)
        MyDate = MyDate + TimeSerial(MyTime.wHour, MyTime.wMinute, MyTime.wSecond)


    Ca peut toujours dépanner quelqu'un...

  • signaler à un administrateur
    Commentaire de teddy_bear le 03/08/2004 16:59:09

    merci bcp ca m'a vraiment aidée (je suis encore débutante) mais je voudrai savoir si c'etai possible biensur comment compter le nombre de jours entre deux dates.
    merci encore

  • signaler à un administrateur
    Commentaire de BruNews le 03/08/2004 18:26:11 administrateur CS

    nJoursEcart = Clng(dat1) - Clng(dat2)

  • signaler à un administrateur
    Commentaire de BruNews le 03/08/2004 18:31:44 administrateur CS

    Egalon > regarde si passe en VB, sera bien plus rapide:
    Dim dbl As Double
    SystemTimeToVariantTime MyTime, dbl
    mydat = dbl

  • signaler à un administrateur
    Commentaire de teddy_bear le 03/08/2004 19:11:21

    merci bcp brunews j'apprecie vraiment
    je vai l'essaiyer mnt

  • signaler à un administrateur
    Commentaire de teddy_bear le 03/08/2004 19:17:33

    malheureusment ca n'a pas marché, j'ai du faire une erreur peut etr

  • signaler à un administrateur
    Commentaire de BruNews le 03/08/2004 19:26:05 administrateur CS

    bizzare, je vais tester de suite dans du Excel, pas de VB installe mais c'est idem.

  • signaler à un administrateur
    Commentaire de BruNews le 03/08/2004 19:38:30 administrateur CS

    Sub Test()
      Dim dt1 As Date, dt2 As Date
      Dim nbrJoursEcart As Long
      dt1 = Date
      dt2 = CDate("5/6/2004")
      nbrJoursEcart = CLng(dt1) - CLng(dt2)
      MsgBox nbrJoursEcart
    End Sub

    me donne bien 59, semble coherent.

  • signaler à un administrateur
    Commentaire de teddy_bear le 03/08/2004 20:10:57

    c ok ca marche vraiment je n sai pa commen te remercier t'es trop gentil
    merci bbbbccccccccccccpppppppppppppppppp

  • signaler à un administrateur
    Commentaire de Egalon le 04/08/2004 08:49:42

    Ok, merci BruNews...
    Vais essayer dans pas longtemps, je commencais à avoir sérieusement besoin de cette  petite fonction.
    ;-)

  • signaler à un administrateur
    Commentaire de Ouneufe le 21/11/2004 05:49:40

    Merci pour ce précieux turorial :)

  • signaler à un administrateur
    Commentaire de aurelskull le 26/12/2004 20:40:41

    tres utile merci

  • signaler à un administrateur
    Commentaire de fcdconnect le 28/01/2005 12:11:39

    salut pas mal mais je suis novice et j'ai une date au format aaa/mm/jj a lakelle j'aimerai ajouter x année...

    merci d'avance

  • signaler à un administrateur
    Commentaire de ab44 le 22/01/2006 12:22:42

    salut déja merci pour ta source !
    je voudrais savoir comment faire pour par exemple quand il est 23:00:00, ajouter par exemple 2 heures et que ca met a jour la date que ca ajoute 1 jour !

    merci a vous !

  • signaler à un administrateur
    Commentaire de fcdconnect le 23/01/2006 10:17:20

    Moi j'utilise ca pour les jours ds une requete si ca peut t'aider :

    Format(DateSerial(Year([req1].date1)-[req1].Duree,Month([req1].date1),Day([req1].date1)),"dd/mm/yyyy"))

  • signaler à un administrateur
    Commentaire de jo l indien le 15/03/2006 16:46:31

    Super clair et super utile! 10/10
    Ca m'enleve une belle épine
    grace à DateAdd() notamment
    MERCI!

  • signaler à un administrateur
    Commentaire de ecranbleu27 le 30/05/2006 10:10:35

    bjr
    moi je souhaite faire une somme d'heures, lorsque celle-ci va au delà de 24h (donc le resultat :sommecolonne) cela se transforme en date,
    comment dois -je "formater" sommecolonne pour bien avoir des heures (par ex 28:30)
    merci

  • signaler à un administrateur
    Commentaire de Egalon le 02/06/2006 13:00:07

    tu formates, le résultat ma_date (en heures:)
    nb_heures = day(ma_date)*24 + hour(my_date)
    ensuite si tu veux conserver les minutes il te faudra formater un affichage texte; car si tu gardes des formats d'heures, il passera forcément en gestion date. tu peux aussi travailler en séparant minutes et heures en utilisant des entiers.

  • signaler à un administrateur
    Commentaire de sanfoura10 le 22/06/2006 10:42:11

    c'est un code simple et très utile je l'ai déjà utilisé dans mon code pour afficher la date sur une page word
    merci pour votre aide monsieur temps :)

  • signaler à un administrateur
    Commentaire de benhi le 19/07/2006 10:58:50

    Tes fonctions, c'est super.
    Je cherche celle qui permet de retrouver le dernier jour du dernier trimestre complet par rapport à la date du jour. Tu as une idée.....

  • signaler à un administrateur
    Commentaire de Tioneb le 29/07/2006 11:02:58

    Très bien la source. Juste un petit problème avec l'ajout de jour à une date (je n'ai besoin que de cette fonction donc je n'ai testé que ça!!!). En effet, il ne faut pas mettre (par exemple):

         DateAdd("j", 5, Date)
    mais
         DateAdd("d", 5, Date)
    Car VB est "anglais"

    Sinon, c'est très bien

  • signaler à un administrateur
    Commentaire de hobbi1 le 30/08/2006 10:44:08

    Je cherchais des infos sur les dates et j'ai trouvé ces explications très claires !

    Mais je crois que ca ne répond pas à mon soucis : je récupère un mois en nombre et je voudrais le convertir en texte
    Est-ce que c'est la fonction Month() qu'il me faut ?

    Ex : je veux que 8 donne "Août".
    La syntaxe est : Month(8) ?????

  • signaler à un administrateur
    Commentaire de poupi91 le 31/08/2006 23:14:16

    La syntaxe est MonthName(8) qui donnera août ...

  • signaler à un administrateur
    Commentaire de motimed le 11/09/2006 17:08:01

    Merci a tous,..mais j'ai un autre pb à résoudre : jréalise une gestion de stock,arrivé a l'historique des entrées et sorties ,il fo ke jrécupére les données entre 2 dates (du ../../.. au ../../.... )saisie par l' utilisateur. en access la requéte sa marche avec between..and..,mais en vb non,,!!!!! msg genre type incompatible ..helpp!!

  • signaler à un administrateur
    Commentaire de Egalon le 13/09/2006 10:32:22

    tu dois convertir ta date en chaine de caractères au format de access. Par exmple sur MySQL, le format est yyyy-mm-dd hh:mm:ss. Et TOUT mettre en chaine de caractères dans ta requete.

  • signaler à un administrateur
    Commentaire de motimed le 18/09/2006 06:50:42

    oui merci Egalon,,c un pu sa,,mai j'ai résolu lpb a l'aide du code suivant,et sa marché d'un seul coup : (d'ailleur jlai trouvé ds vbfrance)

    Function MakeUSDate(dDate As Variant)
        If Not IsDate(dDate) Then Exit Function
        MakeUSDate = "#" & Month(dDate) & "/" & Day(dDate) & "/" & Year(dDate) & "#"
    End Function
      
    Private Sub test_click()
      
    Dim Req As String
    Dim Date_Deb As String
    Dim Date_Fin As String
      
      
    Req = "SELECT * FROM T_FACTURE"
      
    Date_Deb = MakeUSDate(Me.Date_Deb)
    Date_Fin = MakeUSDate(Me.Date_Fin)
      
    Req = Req & " WHERE T_FACTURE.FACT_MODIF Between " & Date_Deb & " AND " & Date_Fin & ""
      
    DoCmd.RunSQL Req
      
    End Sub

  • signaler à un administrateur
    Commentaire de BruNews le 18/09/2006 09:00:38 administrateur CS

    Aucun besoin de manip String, une date est un numeric:
    Dim Req As String
    Dim Date_Deb As String
    Dim Date_Fin As String
    Req = Req & " WHERE T_FACTURE.FACT_MODIF Between " & CLng(CDate(Date_Deb)) & " AND " & CLng(CDate(Date_Fin))
    Devrait aller ainsi.

  • signaler à un administrateur
    Commentaire de begiladss le 01/02/2007 16:59:14

    Comment faire la difference en deux heures en format hh:mm:ss?

  • signaler à un administrateur
    Commentaire de begiladss le 21/02/2007 21:41:38

    J'ai par exemples cette heure (12:10:30)afficher dans mon textbox. comment faire pour n'est que récuperer la minute et l'afficher en msgbox

  • signaler à un administrateur
    Commentaire de NykoKurapika le 13/04/2007 12:38:21

    Juste une petite indication ! je ne sais pas si ca marche en VB6 mais en .NET toujours bien que oui ^^

    Pour l'ajout de jours (ou de mois etc ...) DateResult=DateAdd("d",15,Date1)  OK !

    Mais pour la soustraction, au lieu d'utilisé dateDiff : DateResult=DateAdd("d",-15,Date1)

    l'ajout du signe " - " permet à lui seul de passer d'une addition à une soustraction !

    Voilou !

    Nyko

  • signaler à un administrateur
    Commentaire de vixe le 01/07/2008 15:20:20

    Bonjour tout le monde.
    Tout cela est super interessant et m'aide beaucoup. J'ai encore un souci avec les date. Je dois faire un programme qui calcul des delais en jours. Le probleme de la soustraction des date à ete levé par une de vos contribution. Sauf que mes delais doivent etre calculés en jours ouvrables(semaine hors samedis et dimanches me suffit). Il y a sur excel une fonction "joursem" qui permet de differencier les jours mais je ne sais pas si ca existe sur VBA.
    MeRcI pour votre aide

  • signaler à un administrateur
    Commentaire de vixe le 02/07/2008 11:02:15 9/10

    autant pour moi, j'ai trouvé weekday!

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS