Attendre la fin d'une Macro

Fermé
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016 - 21 janv. 2016 à 21:18
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016 - 22 janv. 2016 à 16:39
Bien le Bonjour à tous !!!

C'est un peu complexe, mais je vais essayer de faire ca simple.

J'ai une macro "TestSechoir" qui peux être appelée par quatre(4) macros "Test_Sechoir1_Auto", "Test_Sechoir2_Auto", etc.

Je lance "Test_Sechoir1_Auto" et je souhaite par la suite l'exécution à toute les heures de la macro "TestSechoir". Je ne peux pas utiliser le fonction WAIT qui monopolise Excel pendant une heure à attendre.

Donc, comment attendre la fin de l'exécution de "TestSechoir", valider "Accepte" et recommencer dans une heure si le résultat est Faux ?!?! (sans mettre Excel en boucle sans fin car Excel sert a autre chose en même temps...)

Quelque chose du genre :

Do
Application.OnTime Now + TimeValue("01:00:00"), "TestSechoir"
Loop While Accepte = False

mais qui fonctionne :) Merci à l'avance !!!
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 janv. 2016 à 10:17
Bonjour

Regarde du coté de la fonction "doevents"
0
Bonjour,

Une solution possible

Sub Test_Sechoir1_Auto()
'
'
'en fin de procédure
MsgBox "Exécution TestSechoir"
TestSechoir
End Sub

Sub TestSechoir()
Dim rep As Integer
'
'
'en fin de procédure
rep = MsgBox("Fin du test" & vbCrLf & vbCrLf & "Programmer un autre test?", vbYesNo + vbQuestion)
If rep = vbYes Then ' si OUI
'Nouveau test dans une minute
MsgBox "Prochain test exécuté à : " & Now + TimeValue("00:01:00")
Application.OnTime Now + TimeValue("00:01:00"), "TestSechoir"
End If
End Sub


Cordialement
0
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
22 janv. 2016 à 15:39
Merci Pour l'info....

Peut-être je m'y prend mal mais voici le hic :

Les macros sont assez complexes et je croyais sauver de la programmation un créant un seul "TestSéchoir" pouvant être appelé par quatre(4) macro :
Chaque macro envois des info à "TestSéchoir" (ex, #de cycle, chemin et nom du fichier "courbes" à ouvrir, nombre d'heure à tester, chemin et nom du fichier Test à ouvrir, etc).
Et chacune des quatre(4) macros attend de savoir si le "TestSéchoir" est accepté pour envoyer un courriel ou recommencer dans une(1) heure si refusé !!!

Je serais mieux de créer un "TestSechoir" pour chaque (Ex, TestSechoir1, TestSéchoir2...) ???

Merci encore !!!
0
Mosca > DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
22 janv. 2016 à 16:23
Je ne sais pas si peut executer une macro en tache de fond

Mais voici une autre façon de proceder

Sub Test_Sechoir1_Auto()
Dim resultat As Boolean, rep As Integer
'
'
resultat = TestSechoir()
If Not resulat Then
rep = MsgBox("Test négatif" & vbCrLf & vbCrLf & "Programmer un autre test?", vbYesNo + vbQuestion)
If rep = vbYes Then ' si OUI
'Nouveau test dans une minute
MsgBox "Prochain test exécuté à : " & Now + TimeValue("00:01:00")
Application.OnTime Now + TimeValue("00:01:00"), "Test_Sechoir1_Auto"
End If
Else
MsgBox "Test positif"
End If

End Sub

'definir une fonction avec ou sans passage de paramètres
Function TestSechoir() As Boolean

MsgBox "Test Sechoir en cours"
'pour l'exemple Test Négatif
TestSechoir = False

End Function
0
DPerron1976 Messages postés 26 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 6 septembre 2016
22 janv. 2016 à 16:39
Merci beaucoup... Ca "allume" beaucoup de lumière !!!
0