Attendre la fin d'une Macro

DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -  
DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention   -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    Regarde du coté de la fonction "doevents"
    0
  2. Mosca
     
    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. DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      1. Mosca > DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
         
        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
    2. DPerron1976 Messages postés 26 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci beaucoup... Ca "allume" beaucoup de lumière !!!
      0