OVH Cloud OVH Cloud

ontime now + var

4 réponses
Avatar
twinley
Bonjour à tous

Je cafouille depuis plusieurs jours et je n'ai plus d'idées..

Le pb : un evenement se produit et j'enregistre la seconde du système dans une var initsecond. L'arrivée de cet evenement n'est pas toujours à la même seconde
Dans delta je calcule le nb de seconde pour lancer une macro à l'aide de OnTime, et qui correspond à la minute suivante
par ex, event à la 12ème seconde et je veux lancer la macro mess() 48 scecondes plus tard quand les secondes seront à 00 ( pour formuler autrement, lancer mess() à chaque changement de minute...)
J'ai tout compliqué et les types de variables m'escagassent
Je n'arrive pas à passer une variable dans OnTime
Ci dessous, ma prose
Merci d'avance pour votre aide

Public Sub envoi(
On Error GoTo Macro21_Er

Dim Start As Varian
Dim initsecond, delta As Intege

initsecond = Second(Time
delta = 60 - initsecon
' h = TimeValue("00:00:00"
hd = h + TimeValue("delta"
Start = Now + delta ' TEMPS(0;0;0
Application.OnTime Start, "mess

Macro21_Exit

Exit Su

Macro21_Err

Resume Macro21_Exi
End Su

Public Sub mess(
Worksheets("Feuil1").Range("D1") = "started at " & Tim
'MsgBox ("Coucou !"
End Sub

4 réponses

Avatar
FxM
Bonjour,

Puisque tu cherches à déclencher aux minutes entières, un exemple dont
tu peux t'inspirer :

Sub test()
a = TimeValue("00:13:30")
b = Int((a * 1440) + 1) / 1440
e = TimeValue(CDate(b))
End Sub

a est la représentation de ton temps
Pour Excel, 1 est un jour donc 24 * 60 minutes (1440 min)
a * 1440 est le nombre de minutes depuis le début de journée.
int(a*1440+1) est la minute entière suivante
Le reste n'est que de la conversion d'unités.

@+
FxM



twinley wrote:
Bonjour à tous,

Je cafouille depuis plusieurs jours et je n'ai plus d'idées...

Le pb : un evenement se produit et j'enregistre la seconde du système dans une var initsecond. L'arrivée de cet evenement n'est pas toujours à la même seconde.
Dans delta je calcule le nb de seconde pour lancer une macro à l'aide de OnTime, et qui correspond à la minute suivante :
par ex, event à la 12ème seconde et je veux lancer la macro mess() 48 scecondes plus tard quand les secondes seront à 00 ( pour formuler autrement, lancer mess() à chaque changement de minute...).
J'ai tout compliqué et les types de variables m'escagassent.
Je n'arrive pas à passer une variable dans OnTime.
Ci dessous, ma prose :
Merci d'avance pour votre aide.

Public Sub envoi()
On Error GoTo Macro21_Err

Dim Start As Variant
Dim initsecond, delta As Integer

initsecond = Second(Time)
delta = 60 - initsecond
' h = TimeValue("00:00:00")
hd = h + TimeValue("delta")
Start = Now + delta ' TEMPS(0;0;0)
Application.OnTime Start, "mess"

Macro21_Exit:

Exit Sub

Macro21_Err:

Resume Macro21_Exit
End Sub

Public Sub mess()
Worksheets("Feuil1").Range("D1") = "started at " & Time
'MsgBox ("Coucou !")
End Sub


Avatar
twinley
merci pour ta réponse, j'étudie et j'adapte et je te dirai ce qu'il en es

à+
Avatar
twinley
C'est une affaire réglée avec élégance..
voilà la solution

Start = Int((Now * 1440) + 1) / 144
Application.OnTime Start, "mess

J'ai virer les déclarations de variables, il reste ces deux lignes

J'ai la macro mess() qui tourne et à chaque fois qu'on arrive à 00 seconde, elle affiche
" Merci FxM !!!

à+
Avatar
FxM
Au plaisir

@+
FxM


twinley wrote:

C'est une affaire réglée avec élégance...
voilà la solution :

Start = Int((Now * 1440) + 1) / 1440
Application.OnTime Start, "mess"

J'ai virer les déclarations de variables, il reste ces deux lignes.

J'ai la macro mess() qui tourne et à chaque fois qu'on arrive à 00 seconde, elle affiche :
" Merci FxM !!! "

à+