[sujet clos]VBA Probleme de timer

  • Auteur de la discussion hoegarden31
  • Date de début

hoegarden31

Expert
lu j'essaye de mettre un timer dans un programme mais sa marche pas
(il me donner des valeurs bizzares genre : 39689,,58)
pouvez vous m'aider svp
merci
 

Freeman23

Expert
39689 est une valeur de date Excel. (enfin surement)

Il faut savoir excel considère les dates comme des nombres à partir d'une date d'origine (la date 0 : en 1900 il me semble).

Les décimales représentes les heures.

Donc si tu es en VBA utilise la fonction format() ou encore cDate()
 

hoegarden31

Expert
ok mais le probleme c que excel change automatiquement la valuer du timer donc il n'y a pas de coherance entre un start_timer et un end_timer alors comment l'initialiser ?
 

hoegarden31

Expert
ok j'ai trouver une solution :
Code:
Dim secondes1 As Integer
Dim secondes2 As integer
secondes1 = Second(Timer)
..mon programme.....
secondes2 = Second(Timer)
MsgBox "Programme executer en" & secondes2 - secondes1 & " secondes"
 

zeb

Modérateur
Rhooo.

Et si secondes1 tombe à 14:22:52 et secondes2 à 14:23:07 ?

Code:
Dim t0 As Date
t0 = Second(Timer)
...ton programme qui dure qui dure qui dure.....
MsgBox "Programme executé en " & CDate(Now - t0)
 

hoegarden31

Expert
lol pourquoi on ne peut pas creer une variable appeller "to" ?
 

hoegarden31

Expert
mais en fait je ne veux pas de tout sa moi je veux juste le qu'il a mis pour s'executer
 

hoegarden31

Expert
Rhooo.

Et si secondes1 tombe à 14:22:52 et secondes2 à 14:23:07 ?

Code:
Dim t0 As Date
t0 = Second(Timer)
...ton programme qui dure qui dure qui dure.....
MsgBox "Programme executé en " & CDate(Now - t0)
:pfff: le nul en plus si tu fait comme tu l'as dit il change le jour de la date
 

hoegarden31

Expert
m'ouai sa peu aller mais c pas encore sa lol car je retrouve avec 159 secondes
 

hoegarden31

Expert
ok j'ai trouver sa comme solution :
Code:
secondes = DateDiff("s", t0, Now)
While secondes > 60
If secondes > 60 Then
    minutes = minutes + 1
    secondes = secondes - 60
    If minutes = 60 Then
    heures = heures + 1
    minutes = 0
    End If
    End If
Wend
MsgBox "Programme executé en " & heures & " heure(s), " & minutes & " minute(s) et " & secondes & " seconde(s)"
et est ce correct de ecrire
Code:
minutes = 0: secondes = 0: heures = 0
?
 

Freeman23

Expert
Ca existe, j'ai déjà vu ca sur internet...

Correct... je sais pas mais je trouve ca moche :D
 

hoegarden31

Expert
:kaola: et pourquoi tu trouve sa moche
j'essaye de faire des truc bien et qu'est ce qu'on me repond :
QUE C MOCHE !!!!
:cry:
 

zeb

Modérateur
C'est moche quand même.

Dixit ce putain de manuel :
Les variables de type Date sont stockées sous la forme de nombres à virgule flottante de 64 bits (8 octets) IEEE représentant des dates comprises entre le 1er janvier 100 et le 31 décembre 9999, et des heures allant de 0:00:00 à 23:59:59.

CInt(Now) un nombre entier de jours.
CInt(Now*24) un nombre entier d'heures.
CInt(Now*24*60) un nombre entier de minutes.
CInt(Now*24*60*60) un nombre entier de secondes.

La précision du format ne permet pas de descendre plus bas

Code:
Dim t0 As Date
t0 = Now
...ton programme qui dure qui dure qui dure.....
MsgBox "Programme executé en " & (Now - t0) * 24 * 60 * 60

Pour être plus précis, tu peux toujouts utiliser l'API GetTickCount.
 

hoegarden31

Expert
sa marche pas trop ton truc il m'affiche 1\01\1900
donc cela veux dire 1 heure, 1 minute et 1900 secondes :??:
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 128
Messages
6 717 836
Membres
1 586 369
Dernier membre
Mouslah
Partager cette page
Haut