VBA Différence entre Wait et OnTime ?

JonMist

XLDnaute Nouveau
Bonjour le forum,

Je me tourne vers vous car je fais fasse à un problème de compréhension.

Voici mon environnement :
J'ai une macro qui se lance à l'ouverture et effectue les taches suivantes :
- Arrêt du calcul automatique
- Mise à jour des connexions existantes entre mon fichier Excel et une Base de données Access,
- Remise en place de formules diverses (très léger),
- Remise en place du calcul automatique,
- Sauvegarde des modifications,
- Fermeture d'Excel.

Mon fichier est très lourd (+ de 100 Mo lié à un fort volume de formule), donc mon traitement de mise à jour demande un certain temps.
J'ai donc programmé le lancement d'une tache système qui vient, de nuit, lancer l'ouverture de mon fichier (et par la même ma procédure de mise à jour).

J'ai observé, en lançant manuellement l'ouverture de mon fichier que son traitement s'effectuait correctement avec un délai de 25 minutes.
Or, en lançant l'ouverture de mon fichier par ma tâche système, j'observe que le délai de traitement ne prend que 18 minutes et que l'actualisation de mes connexions Access => Excel n'a pas le temps de se finaliser.

Voici pour ce qui est de mon environnement.

J'ai donc souhaité programmer une temporisation dans mon fichier Excel pour permettre la bonne finalisation de l'actualisation de mes connexions lors du lancement via la tache système.
Pour cela j'ai utilisé la ligne de code :
Application.Wait Now + TimeValue("00:10:00")
Après avoir observé que cela ne fonctionnait pas, j'ai étudié de plus près la méthode Wait et si j'ai bien compris ce que j'ai pu lire sur l'aide Windows, cette méthode "Wait suspend toute activité Excel jusqu’à ce que la période d’attente soit écoulée" (et par la même l'actualisation de mes connexions).

Je me suis alors tourné vers la méthode OnTime.
Ce qui m'amène à ma question.
Es ce que cette méthode suspend toutes activités Excel au même titre que la méthode Wait ?

Pour finir, j'ai un problème de compréhension de la construction de cette méthode :
OnTime(EarliestTime, Procedure, LatestTime, Schedule)
J'ai compris que les paramètres LatestTime et Schedule étaient optionnels ainsi que le fonctionnement du paramètre EarliestTime.
Mais c'est le paramètre Procedure qui me pose problème. Je dois y indiquer le nom de la macro qui doit se lancer à la fin du temps EarliestTime mais comment ? (en mettant simplement le nom de ma macro, avec des parenthèse, en définissant ma macro comme constante ou variable avant, ... ?)

Espérant avoir été le plus clair possible dans mes explications et ma question, je vous remercie par avance pour le temps que vous pourrez accorder à ma requête.

Cordialement.
 

Dranreb

XLDnaute Barbatruc
Re : VBA Différence entre Wait et OnTime ?

Bonjour.
Non la méthode OnTime ne suspend pas toute activité.
On lu spécifie au moins le nom de la procédure entre doubles guillemets.
Essayez aussi l'instruction DoeVents. Elle offre une occasion au système d'exécuter immédiatement les tâches de fond qui lui ont été demandées, mais qui s'exécutent normalement de façon asynchrone.
 

JonMist

XLDnaute Nouveau
Re : VBA Différence entre Wait et OnTime ?

Bonjour Dranreb et merci pour cette réponse rapide.

Tu penses que le plus efficace sera d'utiliser la méthode OnTime ou la méthode DoEvents ? J'ai lu pas mal de truc qui me disais de faire attention à cette méthode DoEvents sans trop comprendre.

Dans tous les cas, merci beaucoup.
 

JonMist

XLDnaute Nouveau
Re : VBA Différence entre Wait et OnTime ?

Bonjour MJ13,

Non, je n'ai pas encore essayé la fonctionnalité OnTime (où en tout cas pas de façon pour qu'elle fonctionne bien).

Cependant, je ne peux pas utiliser de MsgBox dans mon programme puisque l'objectif est que le fichier se referme tous seul à la fin de la procédure sans intervention de quelconque utilisateur.
Je fais des tests et vous informe de l'évolution.

Cordialement.
 

Dranreb

XLDnaute Barbatruc
Re : VBA Différence entre Wait et OnTime ?

faire attention à cette méthode DoEvents
D'abord c'est une instruction, pas une méthode, puisqu'elle n'est membre d'aucun type d'objet.
Ensuite, eh bien il faut simplement réfléchir à ce qui va se passer quand on l'utilisera par rapport à des instructions genre AppActivate et SendKeys et mettre tout ça dans le bon ordre pour que ce ne soit pas Excel qui se reprend le SendKeys dans la figure par exemple.
 

JonMist

XLDnaute Nouveau
Re : VBA Différence entre Wait et OnTime ?

Bonjour à tous.

Désolé de revenir vers vous si tardivement mais le temps défile à une vitesse impressionnante.
J'ai mis en place la méthode OnTime et le fonctionnement est tout à fait correct. C'est vraiment une méthode très pratique.

Je vous renouvelle mes remerciement pour toutes ces informations qui m'ont été vraiment très utile.

Bon journée à vous.
 

Discussions similaires

Réponses
6
Affichages
210

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib