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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour