OVH Cloud OVH Cloud

Timevalue()

7 réponses
Avatar
Yvan
Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela fonctionne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.

7 réponses

Avatar
Daniel
Bonsoir.
Si tu l'exécute ce soir, ça plante; demain matin, ça ira mieux ;-)
En fait, passé minuit mytime prend la valeur du jour 0, c'est à dire ppour
Excel 31/12/1899 :
i=1 : 22:05
i=2 : 23:05
i=3 : 31/12/1899 00:05
Cordialement.
Daniel
Si tu utilises Now seul, il intègre la date et passe automatiquement au
lendemain.
"Yvan" a écrit dans le message de news:

Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela
fonctionne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.


Avatar
JB
Bonsoir,

TimeValue convertit une chaine:

temps = Now + TimeValue("01:00:00")

ou

temps = Now + (1/24)

JB


Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la synt axe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela fonction ne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.


Avatar
lSteph
Bonsoir,
essaie plutôt

Application.OnTime Now + timevalue(


lSteph
Yvan a pensé très fort :
Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela fonctionne
!!!

Quelle est la subtilité ???


--
- -

Avatar
Yvan
Merci pour ta réponse, c'est exactement ce qui se passait.
A plus,
--
Merci pour vos réponses.



Bonsoir.
Si tu l'exécute ce soir, ça plante; demain matin, ça ira mieux ;-)
En fait, passé minuit mytime prend la valeur du jour 0, c'est à dire ppour
Excel 31/12/1899 :
i=1 : 22:05
i=2 : 23:05
i=3 : 31/12/1899 00:05
Cordialement.
Daniel
Si tu utilises Now seul, il intègre la date et passe automatiquement au
lendemain.
"Yvan" a écrit dans le message de news:

Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela
fonctionne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.







Avatar
Yvan
Merci et à bientôt.
--
Merci pour vos réponses.



Bonsoir,

TimeValue convertit une chaine:

temps = Now + TimeValue("01:00:00")

ou

temps = Now + (1/24)

JB


Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela fonctionne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.






Avatar
Yvan
Merci. A plus,
--
Merci pour vos réponses.



Bonsoir,
essaie plutôt

Application.OnTime Now + timevalue(


lSteph
Yvan a pensé très fort :
Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela fonctionne
!!!

Quelle est la subtilité ???


--
- -






Avatar
LE TROLL
Bonjour,
Je ne sais pas si le code accepte les API, sinon tu peux faire:

option explicit
Private Declare Function GetTickCount Lib "Kernel32" () As Long

dim un as long
un = GetTickCount() ' te donner une valeur en 1000ièm de '' du temps
présent
avec ça, plus de problèmes de dates, etc...

--
Merci beaucoup, au revoir et à bientôt :o)
------
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"Yvan" a écrit dans le message de news:

Bonsoir,

Lorsque j'écris :

For i=1 To 5
Mytime = TimeValue(Now) + (i / 24 / 60)
Application.OnTime Mytime, "procédure"
Next i

je lance la "procédure" toutes les minutes.

Par contre si je veux faire la même chose toutes les heures par la syntaxe
suivante, j'obtiens une erreur, Mytime n'ayant pas la bonne valeur :

For i=1 To 5
Mytime = Timevalue(Now) + (i / 24)
Application.OnTime Mytime, "procédure"
Next i

Alors que si je n'utilise pas Timevalue mais seulement Now, cela
fonctionne
!!!

Quelle est la subtilité ???

--
Merci pour vos réponses.