Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1263 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Attendre la fin d'une éxécution

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Attendre la fin d'une éxécution

n°1289864
DamienCYS
Posté le 23-01-2006 à 09:58:22  profilanswer
 

Salut à tous,
 
J'ai un classeur excel avec une macro qui lance l'actualisation d'une plage de donées basée sur une requète SQL et fait un traitement ensuite.
Mon pb c'est que le reste de l'exécution se lance avant la fin de l'actualisation et donc sur des valeurs non actualisées.
Je cherche donc un moyen d'attendre le fin de l'actualisation ou au pire de faire une pause dans ma macro.

mood
Publicité
Posté le 23-01-2006 à 09:58:22  profilanswer
 

n°1344165
format_c
Plouf plouf ...
Posté le 11-04-2006 à 14:52:54  profilanswer
 

Hello,
Je fais face au même pb et je n'ai pas trouvé de solution encore

n°1344182
lhonolulu
Posté le 11-04-2006 à 15:04:20  profilanswer
 

J'avais trouvé ca une fois pour faire une pause dans un programme. par contre c'est brut de brut...C'est 5 possibilités de pause différente dans un programme mais m'en suis jamais servi. good luck
 
Attribute VB_Name = "TemporisationsEtPauses"
'J'ai découvert que lorsqu'on utilise l'api GetInputState
'au lieu de la fonction vb DoEvents, l'interception des évenements est
'plus rapide... ainsi les répétitions s'effectuent aussi plus rapidement.
'Alors, dans vos structures de répétition (ex. for i=1 to 2000), remplacer
'    DoEvents
'Par
'    If GetInputState Then DoEvents
 
 
Private Type SYSTEMTIME
        wYear As Integer
        wMonth As Integer
        wDayOfWeek As Integer
        wDay As Integer
        wHour As Integer
        wMinute As Integer
        wSecond As Integer
        wMilliseconds As Integer
End Type
Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Declare Function GetInputState Lib "user32" () As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
 
Dim T1 As SYSTEMTIME, T2 As SYSTEMTIME, T3 As SYSTEMTIME
 
'Exemple de pause avec Sleep:
Sub Pause10000()
    MsgBox Time
    Sleep 10000
    MsgBox Time
End Sub
 
Public Sub PauseGetSysTime(Duree As Double, AutoDoEvents As Boolean)
If Duree > 30000 Then Exit Sub
 
Dim TpsEcoule 'Temps écoulé
    GetSystemTime T2
    Do
        GetSystemTime T1
        If T1.wMilliseconds < T2.wMilliseconds Then _
            T1.wMilliseconds = T1.wMilliseconds + 1000: T1.wSecond = T1.wSecond - 1
        T3.wMilliseconds = T1.wMilliseconds - T2.wMilliseconds
        If T1.wSecond < T2.wSecond Then _
            T1.wSecond = T1.wSecond + 60 ': T1.wMinute = T1.wMinute - 1
        T3.wSecond = T1.wSecond - T2.wSecond
 
        TpsEcoule = T3.wMilliseconds + T3.wSecond * 1000 _
                + T3.wMinute * 60 * 1000 + T3.wHour * 60 * 60 * 1000
        If TpsEcoule >= Duree Then Exit Sub
        If AutoDoEvents = True Then DoEvents
    Loop
End Sub
'********************************************************************************************
' Name : xWait
' Purpose : Fait une pause de X secondes
' sans bloquer les autres applications ou fonctions.
' Syntax : xWait(MilsecToWait)
' Parameters : MilsecToWait : Time to wait in millisecond
'********************************************************************************************
Public Sub PauseGetTickCount(ByVal MilsecToWait As Long)
Dim lngEndingTime As Long
   
    lngEndingTime = GetTickCount() + (MilsecToWait)
    Do While GetTickCount() < lngEndingTime
        DoEvents
    Loop
End Sub
 
Sub PauseTimer(ByVal nSecond As Single)
Dim t0 As Single
     'temps de référence
     t0 = Timer
     'boucle d'attente
     Do While Timer - t0 < nSecond
           Dim dummy As Integer
           dummy = DoEvents()
           'si on dépasse minuit,il faut
           'retrancher un jour
           If Timer < t0 Then
               t0 = t0 - 24 * 60 * 60
           End If
     Loop
End Sub
 
Sub PauseDateDiff(NbSec As Long)
  Dim tempotemp
  tempotemp = Now()
  Do Until (DateDiff("s", tempotemp, Now()) > NbSec)
    DoEvents
  Loop
End Sub
 
'Sub test()
'    MsgBox "début"
'    PauseDateDiff 5
'    MsgBox "fin"
'End Sub
 
 
 
 
 
 
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Attendre la fin d'une éxécution

 

Sujets relatifs
Attendre le chargment de la form.calculer temps d'exécution d'un prog
[Résolu] Exécution d'un batch pour ftp...Problème execution VB Script en ASP
Programmer l'heure d'éxécution d'un ordreExécution à distance, problème de répertoire
[Résolu] Exécution sous unixerreur d'execution des CGI en pêrl
VBA EXCEL attendre l'execution du programme .exe[Swing] Attendre la fin d'un repaint() pour continuer l'execution...
Plus de sujets relatifs à : Attendre la fin d'une éxécution


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR