macro

  • Initiateur de la discussion totof
  • Date de début
T

totof

Guest
bonjour à tous,

J'ai plusieurs macro à executer à intervalle regulier.
Le petit probleme c'est que je dois lancer la macro 1 puis passer à la deuxieme à condition que la premiere se soit bien executee .

Pour lancer les macro j'y suis arrive mais pas la contrainte.

Mon code:

Sub process()

' On va rechercher l'heure de départ qui se trouve dans la cellule "k2"
startTime = Application.Worksheets(1).Range("k2").Value

' On va rechercher les huit derniers caractère (à partir de la droite
currentTime = Right(CStr(Now()), 8)

' On teste si la date dans la cellule B2 est plus petite que l'heure système.
' Si c'est le cas, on affiche un message pour avertir l'utilisateur
If (currentTime > startTime) Then
MsgBox "ATTENTION, l'heure dans la celleule K2 est déjà passée"
' 10 représente le nombre de secondes à attendre avant de lancer la suite
Else: Call calculX(10)
End If

End Sub

Sub calculX(intervalSeconde As Integer)

' On va rechercher l'heure de départ qui se trouve dans la cellule B2
startTime = Application.Worksheets(1).Range("k2").Value

' On lance le calcul du X de la 1° caisse
Application.OnTime TimeValue(startTime), "XCAISSE1"

' On lance le calcul du X pour la 2° caisse 10 secondes plus tard
Application.OnTime TimeValue(startTime) + TimeSerial(0, 0, intervalSeconde), "XCAISSE2"

' On lance le calcul du X pour la 3° caisse 20 secondes plus tard
Application.OnTime TimeValue(startTime) + TimeSerial(0, 0, intervalSeconde * 2), "XCAISSE3"

' On lance le calcul du X pour la 4° caisse 10 secondes plus tard
Application.OnTime TimeValue(startTime) + TimeSerial(0, 0, intervalSeconde), "XCAISSE4"

' On lance le calcul du X pour la 5° caisse 20 secondes plus tard
Application.OnTime TimeValue(startTime) + TimeSerial(0, 0, intervalSeconde * 2), "XCAISSE5"

End Sub
 
@

@+Thierry

Guest
Salut Totof

Pas sur de bien avoir suivi...

Si cette condition :
If (currentTime > startTime) Then
Tu lances un Message...
Sinon tu Lances ta macro calculX...


Mais il faut que tes deux variables soient de même style... Or ta variable "currentTime" serait dans ton exemple plutot Single ou Double et ta Variable "startTime" en tant que String... Donc tu dois avoir ta macro "calculX" qui se déclenche jamais et le Message Attention à chaque fois....C'est normal une valeur Numérique est plus petite qu'un valeur AlphaNumérique.

Regarde cet exemple et analyse ce que j'ai fait...

Sub HeureChecking()
Dim CurrentTime As String
Dim StartTime As String

CurrentTime = Right(CStr(Now()), 8)
StartTime = CStr(Worksheets(1).Range("A1").Text)

If (CurrentTime > StartTime) Then
MsgBox "L'heure est Dépassée"
Else
MsgBox "L'heure n'est Pas Dépassée"
End If

End Sub

Bon Aprèm
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 353
Membres
103 196
dernier inscrit
N-TR86