begin process at 2012 05 27 19:14:54
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > MANIPULER LES DATES ET HEURES (ADDITION ET SOUSTRACTION)

MANIPULER LES DATES ET HEURES (ADDITION ET SOUSTRACTION)


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date & Heure Niveau :Initié Date de création :08/05/2002 Date de mise à jour :08/05/2002 17:07:46 Vu :57 652

Auteur : Magidev

Ecrire un message privé
Site perso
Commentaire sur cette source (49)
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à


 Sources du même auteur

Source avec Zip UTILISER VB ET LES BASES DE DONNEES GRACE AU SQL
EMPECHER LA SAISIE DE CERTAINS CARACTERES LE PLUS SIMPLEMENT...
DATE, NOM DU JOUR AVEC UNE MAJUSCULE
DATE, AFFICAGE RAPIDE
Source avec Zip CALLER ID, OU COMMENT SAVOIR QUI APPELLE

 Sources de la même categorie

Source avec Zip Source avec une capture LES PHASES LUNAIRES SELON J. MEEUS par pasquet78
Source avec Zip Source avec une capture LES FONCTIONS DATE PAR L'EXEMPLE. par pasquet78
Source avec Zip Source avec une capture CALENDRIER, MODE D'EMPLOI par pasquet78
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE DIODE AVEC 3 ALARMES ET REMISE À L'HEURE par EhJoe
Source avec Zip Source avec une capture POINTEUSE HORAIRES PAR SEMAINE par VBNoob13

Commentaires et avis

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

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

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

Commentaire de iurodivi le 22/12/2003 01:10:30

bien, merci :)

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.

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

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 ;)

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

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

Commentaire de yaumegui le 14/05/2004 15:50:37

GRAND MERCI au passage !

Commentaire de yaumegui le 14/05/2004 15:58:52

GRAND MERCI au passage !

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...

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

Commentaire de BruNews le 03/08/2004 18:26:11 administrateur CS

nJoursEcart = Clng(dat1) - Clng(dat2)

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

Commentaire de teddy_bear le 03/08/2004 19:11:21

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

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

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.

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.

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

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.
;-)

Commentaire de Ouneufe le 21/11/2004 05:49:40

Merci pour ce précieux turorial :)

Commentaire de aurelskull le 26/12/2004 20:40:41

tres utile merci

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

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 !

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"))

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!

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

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.

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 :)

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.....

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

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) ?????

Commentaire de poupi91 le 31/08/2006 23:14:16

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

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!!

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.

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

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.

Commentaire de begiladss le 01/02/2007 16:59:14

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

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

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

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

Commentaire de vixe le 02/07/2008 11:02:15 9/10

autant pour moi, j'ai trouvé weekday!

Commentaire de cruchot59 le 16/07/2009 00:38:54

jsuis méga débutant... et j'ai installé la macro qui donne l'heure sur une cellule A1 de la premiere feuille d'exell

en fait il donne bien l'heure mais la date est 00/01/1900...

si on change la date de la cellule A1, la seconde d'après ca revient pareil

j'en ai besoin car j'ai besoin de faire une soustraction (un timer) entre 18/07/2009 06:17 et maintenant (hh:mm) (un truc qui met à jour hh:mm chaque seconde)

merci bcp pour votre aide...

Commentaire de Renfield le 16/07/2009 09:18:29 administrateur CS

pour l'heure actuelle, faire simplement

MonHeure.Text = Now

    MonHeure.Text = TimeSerial(Hour(Now), Minute(Now), Second(Now))
se remplace d'ailleurs par:
    MonHeure.Text = Now - Date

Commentaire de olyonnais76 le 08/04/2011 10:10:48

bonjour à tous
Débutant en VBA, je suis devant un problème que je n'arrive pas à résoudre.
dans 1 feuille excel, je dois recueillir les données de fonctionnement de turbines (MW), ces données sont actualisées TOUTES les minutes et ça sur 1 mois (soit environ 45000 lignes).
Il me faut faire la somme de MW produits par JOUR à reporter dans un tableau.
Les dates sont donc variables car l'opération est à faire mensuellement.
Je n'arrive pas à déclarer mes variables (dates) et à écrire le tableau avec par ex 01/03/11,02/03/11,03/03/11... jusqu'à la fin du mois
De plus il faudrait prendre en compte Février...
Si queleques personnes pouvaient m'aider, ce serait magnifique
Merci d'avance

Commentaire de dedian le 16/06/2011 20:25:49

ça c'est tout ce qu'il me fallait. Merci

Commentaire de Egalon le 17/06/2011 09:03:56

olyonnais76, tu pourrais poster un extrait de ton tableau, je crains comprendre...

Commentaire de olyonnais76 le 17/06/2011 16:58:48

Merci pour votre aide à tous mais j'ai résolu mon problème de date

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,172 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales