Excel et calculs sur Dates

Résolu
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 17 févr. 2006 à 01:52
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 17 févr. 2006 à 05:25
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
17 févr. 2006 à 02:52
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 févr. 2006 à 03:48
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
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 févr. 2006 à 04:20
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
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
17 févr. 2006 à 04:07
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". )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
17 févr. 2006 à 04:07
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". )
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
17 févr. 2006 à 05:25
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". )
0
Rejoignez-nous