Faire tourner une macro en tache de fond - VB/VBA/VBS - Programmation
Marsh Posté le 02-10-2008 à 11:43:28
Bonjour
Par "régulierement" tu entends quoi ?
Excel est frisé pour le fichier en question non ? Pas pour un autre fichier ?
Marsh Posté le 02-10-2008 à 20:35:51
SuppotDeSaTante a écrit : Bonjour Par "régulierement" tu entends quoi ? |
Le "régulièrement" est variable. Disons qu'un rafraichissement des données de base avec une période inférieur à 5 minutes serait idéal.
Et quand je dis que Excel freeze, il s'agit de l'instance excel qui va chercher les données, c'est à dire celle sur laquelle je fais mes calculs. Tant que la macro qui va récupérer les données est active, je ne peux rien faire. A cela je vois deux possibilités :
Dans les deux cas je ne sais pas comment faire :
Merci pour votre aide,
Jul
Marsh Posté le 02-10-2008 à 22:49:37
Et bien fait, tu peux lancer ton timer des que le fichier est ouvert non ?
Marsh Posté le 03-10-2008 à 00:29:40
SuppotDeSaTante a écrit : Et bien fait, tu peux lancer ton timer des que le fichier est ouvert non ? |
oui mais alors comme la macro tourne, je ne peux pas modifier les cellules de mon fichier (par exemple changer des valeurs de test). C'est ça que j'entends par excel qui freeze... En fait c'est que lorsqu'une macro tourne, je n'ai plus la main sur les feuilles...
Jul
Marsh Posté le 03-10-2008 à 09:13:04
Il parrait evident que tu ne peux modifier des valeurs pendant l'execution de la macro... imagine, tu changes de page pendant une execution, tu te retrouves donc a activer une autre feuille, et donc, les calculs se feront a partir de la feuille que tu viens d'activer, et non de celle qui devrait etre utilisé, ou bien un simple "Me.Textbox1.value" ne fonctionnera plu si tu changes de feuille etc....
Marsh Posté le 03-10-2008 à 09:50:14
JulG a écrit : |
Il sera freezé seulement le temps d'execution. Ta macro ne mets pas 10mn a s'executer si ?
Je pars du principe que tu executes ta macro toutes les 5 minutes et qu'elle met 20sc a s'executer (c'est deja pas mal 20sc...)
Bah tu auras un freeze pendant 20sc... et donc 4mn40 pour bosser dessus.
Regarde la fonction DoEvents.
Marsh Posté le 03-10-2008 à 14:07:31
SuppotDeSaTante a écrit : |
Tu oublies le temps de la sauvegarde automatique
Puis si c'est comme les miennes (avec import a partir d'une base aux *staÿtes* toussa) t'en a pour 15 20min d'execution quoi...
Marsh Posté le 03-10-2008 à 15:20:11
Moonschild a écrit : |
Ca n'etait pas precisé dans son post... Pis excel n'est pas un SGBD.
Marsh Posté le 03-10-2008 à 15:37:10
SuppotDeSaTante a écrit : |
Le but de mon idée est que l'utilisateur n'a pas besoin d'activer manuellement la macro... Sinon je n'ai plus du tout de problème : le freeze dure une dizaine de secondes et tout est fini. Mais là je souhaite que mes données viennent toutes seules.
Est ce qu'il est possible de démarrer automatiquement (sans action de la part de l'utilisateur) une macro toutes les x minutes ou de faire tourner en continu une macro sur un classeur sans empêcher l'utilisation des feuilles de calcul de celui-ci ?
Jul
Marsh Posté le 03-10-2008 à 15:43:30
Comme dis plus haut, tu auras forcement un freez de 10sc.
Pour demarrer automatiquement il suffit de le mettre dans le demarrage du fichier Private Sub Workbook_Open()
Et avec une boucle de temps de lui dire de le faire toutes les 5mn...
Sinon, je ne sais pas ce que tu as d'installer sur ta machine, mais normalement le controle Timer permet de le faire en tache de fond. Mais il ne doit pas etre exploitable avec Office seulement...
Marsh Posté le 03-10-2008 à 15:47:24
SuppotDeSaTante a écrit : Pour demarrer automatiquement il suffit de le mettre dans le demarrage du fichier Private Sub Workbook_Open() |
Procedure de declanchement de macro en fonction du temps : Application.ontime (Regarde l'aide dessus, elle est complete )
J'espere que tu trouveras ta solution avec ca
Marsh Posté le 01-10-2008 à 15:50:08
Bonjour,
J'ai un petit souci en VBA sous Excel.
D'un coté j'ai un PC avec une appli tiers qui tourne en temps réel. J'ai la possibilité de réaliser des exports réguliers vers un fichier excel, ce que je fais.
De l'autre coté, j'ai un autre PC avec excel et une feuille d'analyse des données.
J'ai codé une macro qui va régulièrement chercher le dernier fichier mais le problème c'est que tant qu'elle tourne l'excel est freezé et du coup je ne peux pas faire mes analyses
Est-il possible de faire en sorte que ma macro d'import des données tourne en tache de fond et me laisse la main sur excel ?
Merci d'avance,
Jul