DoEvents et bloquage de MSO Outlook 2003

Biankiii Messages postés 2 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 28 juin 2006 - 27 juin 2006 à 14:13
cs_happiness Messages postés 1 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 15 décembre 2010 - 15 déc. 2010 à 23:38
Bonjour à tous :)

Tout d'abord je tenais à m'excuser si je n'ai pas placer mon message dans la bonne catégorie.

Je développe une application en VBA qui permet à Outlook de récupérer des évènements à partir d'une base de données distantes.
Ces évènements sont en réalité des réservations de chambres pour un gite qui sont prises à partir du site internet de l'établissement.
Ce processus de synchronisation entre Outlook et le site s'effectue toute les 10 minutes (600 secondes), j'ai donc mis en place une procédure en VBA qui gère un timer et qui execute d'autres procédure chargées de récupérer à partir de la BDD et d'insérer dans le calendrier d'Outlook les réservations (contenue dans une BDD MySQL).

Voici le code de ma procédure qui gère le timer :


'---------------------------------------------------------
'Gestion du Timer
Private Sub fairePause()
    Dim PauseTime As Integer
    Dim start As Single
   
    PauseTime = 600
    start = Timer
   
    Do While Timer < start + PauseTime
        DoEvents
    Loop
   
    Debug.Print (Time & " : Sub fairePause : Le timer a été relancé à " & Time)
   
    Call parcoursReservationBDD
    Call fairePause
End Sub
'---------------------------------------------------------

Le problème qui se pose est le suivant : lorsque la procédure fairePause se lance, celle-ci bloque Outlook malgré l'utilisation de DoEvents. Par bloquer, j'entend que Outlook ne récupère plus les messages (mail) à partir du serveur POP configuré. D'autre part, depuis que j'ai mis ce module VBA en test, j'observe d'autres "bugs" sur Outlook : les barres d'outils disparraissent, les aperçu des messages ne s'affichent plus, ...
J'ai fais quelques tests en mettant l'application VBA en pause lorsque j'observe l'un de ces bugs et j'ai remarqué à chaque fois que l'exécution était bloquée sur DoEvents.

Donc ma question est : est-ce que l'utilisationn de DoEvents est justifiée ici ? et si non, qu'elle autre instruction pourrais-je utiliser pour qu'Outlook puisse s'exécuter normalement (récupérer les mail, ...) pendant les 10 minutes d'attente ?

En espérant avoir été clair...je vous remercie d'avance pour l'aide éventuelle que vous pourrez m'apporter.

J. Bianchi

3 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
27 juin 2006 à 21:00
Bonjour,


A tout hasard, met un Sleep dans ta boucle :


Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


    Do While Timer < start + PauseTime

        Sleep 10

        DoEvents

    Loop
0
Biankiii Messages postés 2 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 28 juin 2006
28 juin 2006 à 09:55
Bonjour,

Tout d'abors merci de votre réponse :)

J'ai l'impression que la solution proposée à partiellement corrigé mon problème : Outlook récupère correctement les mails même lorsque l'application VBA est lancée.

Par contre, il reste toujours un disfonctionnement léger d'Outlook avec cette appli VBA : lorsque je reçois un nouveau mail, la petite enveloppe apparait dans la barre des tâches. Je lis le mail, et celle-ci ne disparait pas tant que je n'ai pas stopper VBA.

Ce n'est qu'un détail, mais si quelqu'un a une idée de la manière de corriger cela, je serais très content qu'il me la fasse partagée...

Encore une fois merci de votre aide :)
0
cs_happiness Messages postés 1 Date d'inscription vendredi 14 juillet 2006 Statut Membre Dernière intervention 15 décembre 2010
15 déc. 2010 à 23:38
Bonjour, je peux savoir ou vous avez place la fonction fairePause(), dans quel evenement ?
parcque j'ai le meme cas, je veux extraire les donnees depuis une BD et les envoyer vers des utilisateurs
j'en ai vraiment besoin
Merci :)
0
Rejoignez-nous