Excel et calculs sur Dates

Résolu
Signaler
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
-
Hi guys,

Pour une fois que c'est moi qui pose une question à la con...

En fait, moi j'ai un problème d'ordre général sous Excel (perso j'ai la version 2000 mais qu'importe) concernant un de mes plus gros défaut : la manipulation des dates (via les formules)...

Pour commencer j'aimerais savoir si quelqu'un a une explication pour les valeurs numérique des dates (vous savez, lorsqu'on passe du type cellulaire Date à Standard).

Ce que j'aimerais faire, comme tout le monde, c'est :
Additionner à une date : des jours, des mois et des années.
Soustraire une date à une autre afin, par exemple, de connaître la différence en jour, mois et années.

Après, j'aimerais inclure à tout ça l'heure.

Mais lorsque que je parles de jours, de mois et d'années, si possible, obtenir ça d'un coup (i.e. dans un format "date différentielle" en quelque sort!).

Il serait même bon de faire un tuto sur ce point que je trouve, personnellement, délicat tant sous Office que sous VB !

Merci par avance

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Les dates de Excel sont calculées depuis le 01/01/1900 ou 1904 selon les options.
Le chiffre qui apparait dans une cellule quand on tranforme une date en standard correspond au nombre de jours entre 01/01/1900 et la date, soir 38764 aujourd'hui.
En VB, c'est le nomnbre que tu obtiens avec la fonction
Nombre = DateDiff( "d", "01/01/1900", "16/02/2006") + 1
Va comprendre pourquoi le + 1 ... bizarrement les calculs d'Excel et de VB ne donnent pas la même chose.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
d'après ce que j'ai compris Excel donne le nombre de jours depuis le
veille du 1er janvier 1900 (ou 1904) donc du 0 janvier 1900 ???
(ou plutôt le 31/12/1899)

et en Vb c'est depuis le 30/12/1899

d'où cette différence de 1



Dim dt1 As Date

Dim dt2 As Date

dt1 = "30/12/1899"

dt2 = "16/02/2006"

MsgBox DateDiff("d", dt1, dt2) --> le même que Clng (dt2)


- DateDiff() permet de calculer une différence de dates
une différence de Date n'est pas une date mais une durée

cette durée ne peut donc pas être utilisée en tant que Date pour être

transformée en jour, mois, année

donc DateDiff() ne permet pas de connaître la différence en jour, mois et année,

il faut faire la différence jour-jour, mois-mois, année-année ou l'inverse et

reporter la retenue, comme à l'école ...


- DateAdd() permet d'ajouter une durée à une date

on obtient bel et bien une date

- les temps en Vb sont aussi en type date mais limité à < 24 heures

ce qui explique ?? peut être le début fixé au 30/12/1899 (quoique ça fait 2 jours)

Dim dt As Date

dt = 0: MsgBox
dt
'c'est un temps

dt = 0.999991: MsgBox dt
'c'est un temps

au dela c'est une date:

dt = 1: MsgBox dt

- Une date est un numérique (type Double)

le nombre de jours est la partie entière

les heures, minutes,secondes sont la partie décimale


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
en Excel j'en sais rien

si c'est comme en Vb oui



Date c'est bien du type numérique (du Double détourné)

dt = jours + heures/24 + minutes/1440 + secondes/86400


voila une fonction qui calcule la différence de 2 dates en année, mois, jour, heure, minutes,secondes

ce sont des simples soustractions et additions si retenue

le seul point délicat c'est le calcul du nombre du jour qui reste qui dépend du mois de l'année.

tout ça en Vb parce que Excel et moi ça fait 2.



'Les variables pour le résultat

Dim an As Long

Dim mois As Long

Dim jour As Long

Dim Heure As Long

Dim Min As Long

Dim Sec As Long



Private Sub CalDate(ByVal d1 As Date, ByVal d2 As Date)

Dim d As Date

Dim x As Double



If d1 > d2 Then d d2: d2 d1: d1 = d



Sec = Second(d2) - Second(d1)

If Sec < 0 Then

d1 = DateAdd("n", 1, d1)

Sec = Sec + 60

End If



Min = Minute(d2) - Minute(d1)

If Min < 0 Then

d1 = DateAdd("h", 1, d1)

Min = Min + 60

End If



Heure = Hour(d2) - Hour(d1)

If Heure < 0 Then

d1 = DateAdd("d", 1, d1)

Heure = Heure + 24

End If



jour = Day(d2) - Day(d1)

If jour < 0 Then

d = d1

d1 = DateAdd("m", 1, d1)

jour = d1 - d + Day(d) - Day(d1) + jour

End If



mois = Month(d2) - Month(d1)

If mois < 0 Then

d1 DateAdd("yyyy", 1, d1): mois mois + 12

End If



an = Year(d2) - Year(d1)



End Sub


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Merci beaucoup pour toutes ces précisions

Donc, si j'ai bien compris, on peut parfaitement intégrer les heures dans ces fonctions puisqu'elles utilisent des types Date (même s'ils sont Variants) ? C'est bien ça ?

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Merci beaucoup pour toutes ces précisions

Donc, si j'ai bien compris, on peut parfaitement intégrer les heures dans ces fonctions puisqu'elles utilisent des types Date (même s'ils sont Variants) ? C'est bien ça ?

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
Merci beaucoup Gobillot pour ton effort. Je vais tâcher d'étudier cela de plus près... Je maitrise pas encore vraiment tout ça... Pi faut dire aussi que moi et les dates c'est un peu comme toi et Excel ... y'a incompatibilité!

Mais merci encore à tous deux, ça va m'être bien utile

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )