Lancement automatique d'une macro lorsque l' ordinateur est inactif

airvb

XLDnaute Nouveau
Bonjour,

Au travail, j'ai un fichier excel/VBA qui récupère des datas ds une application extérieure.
Je lance régulièrement cette récupération.
Travaillant simultanément sur plusieurs tableaux, je voudrai lancer une macro qui lance la récupération lorsque excel n'est plus utilisé au bout d'un certain temps.

Une piste ?

Merci d'avance.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : Lancement automatique d'une macro lorsque l' ordinateur est inactif

je voudrai lancer une macro qui lance la récupération lorsque excel n'est plus utilisé au bout d'un certain temps.

.
oui mais si excel n'est pas utilisé !! comment veux tu lancé une macro excel ?
il existe bien les fichiers ".bat" mais cela est compliqué pour moi en plus il y a une gestion de contrôle d'ouverture d'excel par rapport a un temps déterminé.
A+
 

airvb

XLDnaute Nouveau
Re : Lancement automatique d'une macro lorsque l' ordinateur est inactif

oui mais si excel n'est pas utilisé !! comment veux tu lancé une macro excel ?
il existe bien les fichiers ".bat" mais cela est compliqué pour moi en plus il y a une gestion de contrôle d'ouverture d'excel par rapport a un temps déterminé.
A+

J'imaginais naïvement peut-être,
J'ouvre mon fichier excel.
Je l'utilise....
puis arrête
Début d'un décompte
A décompte + 5 Mn lancement de la macro de récupération de données.
Si activité avant les 5mn , on recommence.

Le fichier excel ds lequel la macro pourrait être ouvert constamment.
 

fhoest

XLDnaute Accro
Re : Lancement automatique d'une macro lorsque l' ordinateur est inactif

Voilà regarde cette exemple
a mettre dans le vba workbook
Code:
Private Sub Workbook_open()
Call start_macro_ontime
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'arreter la macro_ontime en cours puis la redemarer pour initialisé
Call arret_macro_ontime
Call start_macro_ontime
End Sub
a mettre dans un module
Code:
'si on ferme le fichier il va se réouvrir automatiquement pour exécuter la macro aussi longtemps que le sub arret macro ontime n'est pas exécuté.
Public montemps
Sub MaMacro()
MsgBox "bonjour"
Call start_macro_ontime
End Sub
Sub start_macro_ontime()
montemps = TimeValue(Now + TimeSerial(0, 0, 15))
Application.OnTime montemps, "MaMacro"
End Sub
Sub arret_macro_ontime()
Application.OnTime montemps, "MaMacro", schedule:=False
End Sub
l'arret doit se faire soit par un bouton soit par l'évènement workbook_close()
A essayer.
A+
 

airvb

XLDnaute Nouveau
Re : Lancement automatique d'une macro lorsque l' ordinateur est inactif

[/code]
l'arret doit se faire soit par un bouton soit par l'évènement workbook_close()
A essayer.
A+[/QUOTE]

Bonsoir, on progresse.
Sauf qu'avec l'exemple ci dessus il n'est pas pris en compte si activité ou non il y a.
La macro 'mamacro' tourne constamment et affiche une msgbox toute les 15secs !

Ou j'ai pas compris :(
 

fhoest

XLDnaute Accro
Re : Lancement automatique d'une macro lorsque l' ordinateur est inactif

Oui je pense que tu n'as pas compris
en fait le code fait tourné la macro "mamacro" toutes les 15 secondes si il y a une activité sur le fichier CAD changement de cellule le compteur est réinitilisé a 0 donc aussi longtemps qu'il y a une activité sur une période inférieure a 15 sec les compteur =0 si pas d'activité au bout de 15 sec msgbox"bonjour"
pour l'arret de la macro des 15 sec.
mettre le code suivant en dessous du
Code:
sub workbook open
...
end sub
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
call arret_macro_ontime
End Sub
Cela veux dire que si tu ferme le fichier la macro de gestion du temps et de la macro qui affiche le msgbox"bonjour" s’arrête.

Tu peux changer le temps sur cette ligne de code
Code:
montemps = TimeValue(Now + TimeSerial(0=heure, 0=minute, 15=seconde))
A toi d'adapter a ton programme.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia