IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Attendre la fin d'un traitement avant d'en commencer un autre [Toutes versions]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Août 2010
    Messages : 41
    Points : 30
    Points
    30
    Par défaut Attendre la fin d'un traitement avant d'en commencer un autre
    Bonjour,

    Principe de mon traitement : lecture en boucle d'enregistrements d'une table, chaque enregistrement correspondant à une instruction (copie de fichier, exécution macro Access, zip de répertoire etc.).

    Il faudrait en fait que chaque instruction attende la fin d'exécution de la précédente pour s'exécuter (certaines durées d'exécution d'instruction peuvent aller jusqu'à plusieurs heures).

    Comment faire ? Est-ce que je dois passer par un DoEvents ? Si oui, comment le gérer (je ne l'ai jamais utilisé) ? Est-ce que cet exemple pourrait convenir à mon besoin, sachant que je ne connais pas les temps d'exécution maximum des différentes instructions ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Instruction 1
    DoEvents
    For i = 1 To 10000000
    Next
    Instruction 2
    Je vous remercie par avance pour l'aide que vous pourrez m'apporter.

    Bonne journée.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Bonsoir,

    Normalement il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Instruction 1
    DoEvents
    Instruction 2
    S'il y a moyen de connaitre l'avancement de instruction1 c'est mieux pour l'utilisateur ! Si oui j'utilise syscmd qui affiche une barre d'avancement en bas...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Août 2010
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Bonsoir,

    Normalement il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Instruction 1
    DoEvents
    Instruction 2
    S'il y a moyen de connaitre l'avancement de instruction1 c'est mieux pour l'utilisateur ! Si oui j'utilise syscmd qui affiche une barre d'avancement en bas...
    Merci beaucoup pour ta réponse. Dans mon cas, les instructions sont exécutées dans une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Set matable.OpenRecordset(..)
    Do While Not matable.EOF
            Exécution de mon instruction
            matable.MoveNext
    Loop
    Dois-je placer le DoEvents avant le MoveNext par exemple ?
    Est-ce que ça peut fonctionner avec un Do While ?

    Pour le syscmd, je regarderai d'abord son fonctionnement avant d'essayer de l'utiliser mais une jauge sera(it) effectivement très utile !

    Merci encore pour ton aide.

    Bonne soirée.

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 090
    Points : 5 207
    Points
    5 207
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set matable.OpenRecordset(..)
    i=0
    r=syscmd(1,"traitement en cours...",matable.recordcount)
    Do While Not matable.EOF
            Exécution de mon instruction
            doevents
            i=i+1
            r=syscmd(2,i)
            matable.MoveNext
    Loop
    r=syscmd(3)
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Août 2010
    Messages : 41
    Points : 30
    Points
    30
    Par défaut
    Ca fonctionne parfaitement bien, merci infiniment pour ton bout de code qui solutionne mes 2 besoins.

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Attendre la fin d'un Shell avant d'en lancer un autre
    Par tardmonkey dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/01/2013, 16h17
  2. Réponses: 7
    Dernier message: 07/07/2010, 12h17
  3. Attendre la fin d'une fonction avant d'en executer une autre
    Par FluidBlow dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 24/07/2009, 21h46
  4. Réponses: 2
    Dernier message: 17/07/2007, 13h57
  5. Réponses: 2
    Dernier message: 25/05/2006, 19h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo