Attendre la fin d'une Macro

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 !!!

2 réponses

  1. Contributeur
    Bonjour

    Regarde du coté de la fonction "doevents"
    0
    1. 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
      1. 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
      2. @DPerron1976Je 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
      3. Merci beaucoup... Ca "allume" beaucoup de lumière !!!
        0