OVH Cloud OVH Cloud

passage à minuit

5 réponses
Avatar
michelenvi
Bonjour,

Dans VBA, je crée une boucle afin b'obtenir une liste de date et d'heure pour un mois.
Dans les variable VBA, l'heure suivante de 24/03/04 23:00 est bien 25/03/04 00:00,mais lors de l'écriture de cette date dans la feuille excel, j'obtient 24/03/04 00:00.
Pourquoi ???

merci

--
semich

5 réponses

Avatar
AV
Dans VBA, je crée une boucle afin b'obtenir une liste de date et d'heure pour
un mois.

Dans les variable VBA, l'heure suivante de 24/03/04 23:00 est bien 25/03/04
00:00,mais lors de l'écriture de cette date dans la feuille excel, j'obtient

24/03/04 00:00.
Pourquoi ???


En l'absence du code, ça va pas être facile !

AV

Avatar
Nicolas B.
Salut,

Comme ceci, ça fonctionne :
Sub ListeDate()
Dim D As Double
D = DateSerial(2004, 6, 1)
While Month(D) = Mois
i = i + 1
Cells(i, 1) = D
D = D + 1 / 24
Wend
End Sub

La macro ne marche plus si on définit D comme une variable Date...


A+
--
Nicolas B.


Bonjour,

Dans VBA, je crée une boucle afin b'obtenir une liste de date et
d'heure pour un mois.
Dans les variable VBA, l'heure suivante de 24/03/04 23:00 est bien
25/03/04 00:00,mais lors de l'écriture de cette date dans la feuille
excel, j'obtient 24/03/04 00:00. Pourquoi ???

merci

--
semich


Avatar
AV
La macro ne marche plus si on définit D comme une variable Date...


Et si on ne définit pas "Mois", elle marche quand même ?
;-)
AV

Avatar
Nicolas B.
Oups, petit problème de Copier-coller...

Comme ceci, c'est testé, ça marche... ;-)

Sub ListeDate()
Dim D As Double
D = DateSerial(2004, 6, 1)
While Month(D) = 6
i = i + 1
Cells(i, 1) = D
D = D + 1 / 24
Wend
End Sub

Et puis on peut faire aussi comme ça (pour conserver D en Date) :
Sub ListeDate()
Dim D As Date
D = DateSerial(2004, 6, 1)
While Month(D) = 6
i = i + 1
Cells(i, 1) = CDec(D)
D = D + 1 / 24
Wend
End Sub

Par contre, je sais pas pourquoi ça ne marche pas sans le CDec...


A+
--
Nicolas B.


La macro ne marche plus si on définit D comme une variable Date...


Et si on ne définit pas "Mois", elle marche quand même ?
;-)
AV



Avatar
michdenis
Bonjour Nicolas,

Une date est habituellement une donnée de type "Long" et pour cause ... une date avec excel représente le nombre de
jours entre 1 janvier 1900 et la date désirée ! Il est question ici de nombres entiers (jours) et comme une date donnée
peut facilement dépasser (nombre de jours) facilement 32726 (Limite pour une variable de type Integer) .... on ne peut
pas lui affecter un type Integer. Cependant, si dans le format d'une date, on doit tenir compte des
Heures:Minutes:Secondes, soit la partie décimale d'un nombre (représentant une date), on doit en conséquence permettre à
cette variable d'en tenir compte, et le type "Long" ou "Integer" ne sont plus appropriés parce qu'ils ne gèrent pas les
nombres avec décimales. On doit alors opter pour une variable ayant un type as "Double" ....


Salutations!



"Nicolas B." a écrit dans le message de news:
Oups, petit problème de Copier-coller...

Comme ceci, c'est testé, ça marche... ;-)

Sub ListeDate()
Dim D As Double
D = DateSerial(2004, 6, 1)
While Month(D) = 6
i = i + 1
Cells(i, 1) = D
D = D + 1 / 24
Wend
End Sub

Et puis on peut faire aussi comme ça (pour conserver D en Date) :
Sub ListeDate()
Dim D As Date
D = DateSerial(2004, 6, 1)
While Month(D) = 6
i = i + 1
Cells(i, 1) = CDec(D)
D = D + 1 / 24
Wend
End Sub

Par contre, je sais pas pourquoi ça ne marche pas sans le CDec...


A+
--
Nicolas B.


La macro ne marche plus si on définit D comme une variable Date...


Et si on ne définit pas "Mois", elle marche quand même ?
;-)
AV