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 : 41 959

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à
 

Commentaires et avis

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



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.