OVH Cloud OVH Cloud

lire txt toutes les secondes

9 réponses
Avatar
chris
bonjour,
je cherche une macro qui me lirait un fichier txt en boucle toutes les
secondes ou 2 secs et me mettrait le contenu en A1
merci de votre aide
à bientot

9 réponses

Avatar
papou
Bonjour
Code à placer dans un module du classeur et à adpater :
Sub Auto_Open()
Application.OnTime (Now + TimeValue("00:00:01")), "LitMoi"
End Sub
Sub LitMoi()
Dim Fichier$, N&
Dim FSO, Fich1
Set FSO = CreateObject("Scripting.FileSystemObject")
Fichier = "C:toto.txt"
Set Fich1 = FSO.OpenTextFile(Fichier, 1)
N = 0
Do While Not Fich1.AtEndOfStream
N = N + 1
Donnee = Fich1.ReadLine
Feuil1.[A1] = [A1] & Donnee
Loop
Fich1.Close
Application.OnTime (Now + TimeValue("00:00:01")), "LitMoi"
End Sub

Cordialement
Pascal


"chris" a écrit dans le message de
news:411c86ab$0$26538$
bonjour,
je cherche une macro qui me lirait un fichier txt en boucle toutes les
secondes ou 2 secs et me mettrait le contenu en A1
merci de votre aide
à bientot




Avatar
chris
merci pour cette reponse hyper rapide ;) ça marche mais j'ai 2 questions
(encore)
1 comment arreter cette macro ?
2 comment la modifier pour que ça remplace le texte dans la cellule au lieu
de mettre a la suite ?
merci encore de ton aide tu me fait gagner beaucoup de temp ;)
@+
Avatar
chris
j'ai trouvé pour la 2 il suffit de mettre
Feuil1.[A1] = Donnee à la place de Feuil1.[A1] = [A1] & Donnee
merci
Avatar
papou
Re
1 - Avec une autre macro qui contiendrait
Application.OnTime Now + TimeValue("00:00:01"), "LitMoi", , False

2 - En modifiant comme ceci
Donnee = Donnee & Fich1.ReadLine
Feuil1.[A1] = Donnee

Cordialement
Pascal


"chris" a écrit dans le message de
news:411c8db3$0$26541$
merci pour cette reponse hyper rapide ;) ça marche mais j'ai 2 questions
(encore)
1 comment arreter cette macro ?
2 comment la modifier pour que ça remplace le texte dans la cellule au
lieu

de mettre a la suite ?
merci encore de ton aide tu me fait gagner beaucoup de temp ;)
@+




Avatar
chris
merci papou :)
dis moi si j'abuse ;) mais j'ai encore une question :)
peut on dire a une macro de lancer d'autre macro mais avec un timer car je
veux que le format de A1 change continuellement apres la lecture du fichier
txt
je m'explique
macro1--->2sec---->macro2----->2sec----->macro3---->2sec---->retour a macro1
ps: la macro pour arreter ne marche pas :(
merci encore de ton aide, si je peux renvoyer l'ascenceur un jour ? (surtout
si j'y arrive :))
@+chris
Avatar
papou
Re
D'abord pour arrêter la macro, effectivement ça ne marche pas, donc pour
cela tu modifies tout avec ceci et tu lances la macro stopMoiTout pour comme
son nom l'indique, arrêter la macro ;-)
Pour ton info, j'ai tiré des infos notamment à partir de ce site :
http://www.cpearson.com/excel/ontime.htm

Public Quand As Double
Public Const LaMacro = "LitMoi"
Sub Auto_Open()
Quand = Now + TimeValue("00:00:01")
Application.OnTime earliesttime:=Quand, procedure:=LaMacro, schedule:=True
End Sub
Sub LitMoi()
Dim Fichier$, N&
Dim FSO, Fich1
Set FSO = CreateObject("Scripting.FileSystemObject")
Fichier = "C:toto.txt"
Set Fich1 = FSO.OpenTextFile(Fichier, 1)
N = 0
Do While Not Fich1.AtEndOfStream
N = N + 1
Donnee = Donnee & Fich1.ReadLine
Feuil1.[A1] = Donnee
Loop
Fich1.Close
End Sub
Sub stopMoitout()
On Error Resume Next
Application.OnTime earliesttime:=Quand, procedure:=LaMacro,
schedule:úlse
End Sub

Ensuite, j'avoue que je ne comprend pas tout ?
Tu veux après avoir traité ton fichier texte (donc après exécution de la
macro LitMoi) appeler une autre macro ?
Si c'est ça, il te suffit de mettre le nom de ta macro en avant dernière
ligne.
Mais je ne suis pas sûr que c'est ça que tu veux !

Pour ce qui concerne le retour, ne te préoccupes pas de ça, les personnes
qui interviennent le font bénévolement et n'attendent rien en retour (sinon
quand même des remerciements !).
Et puis le retour peut peut-être parfois s'effectuer au hasard d'une autre
chose, qui sait ?

Cordialement
Pascal

"chris" a écrit dans le message de
news:411c9394$0$26555$
merci papou :)
dis moi si j'abuse ;) mais j'ai encore une question :)
peut on dire a une macro de lancer d'autre macro mais avec un timer car je
veux que le format de A1 change continuellement apres la lecture du
fichier

txt
je m'explique
macro1--->2sec---->macro2----->2sec----->macro3---->2sec---->retour a
macro1

ps: la macro pour arreter ne marche pas :(
merci encore de ton aide, si je peux renvoyer l'ascenceur un jour ?
(surtout

si j'y arrive :))
@+chris




Avatar
chris
si je met la macro en avant derniere ligne elle va se lancer toutes les
secondes alors que je veux une macro differente (3) toutes les secondes ceci
3 fois et apres revenir à la 1ere
exemple)

je lis le txt
je mets en format1
pause 1sec
je lis le txt
pause1sec
je lis le txt
je met en format2
pause 1sec
je lis le txt
pause1sec
je lis le txt
je met en format3
pause 1sec
je lis le txt
pause1sec
je reviens à la 1ere ligne

ce qui me permet d'avoir jr un txt rafraichis avec un format qui change ~
toutes les 2 sec
merci de ton aide et desolé si j'ai pas ete clair
@+
Avatar
Michel Gaboly
Bonhjour,

Tu peux obtenoir ce genre de choses avec une boucle Do While ... Loop ou
Do ... Loop Until :

Sub Essai5secondes()
MacroNsecondes 5
End Sub

Sub Essai10secondes()
MacroNsecondes 10
End Sub

Private Sub MacroNsecondes(Nb As Long)
Dim i As Long, Debut As Date
Debut = Now
Do While (Now - Debut) * 86400 < Nb
i = i + 1
Loop
MsgBox i
End Sub

Essai5secondes fait tourner la macro MacroNsecondes pendant 5 secondes, et
Essai10secondes la fait tourner 10 secondes.


NB - 86400 est le nombre de secondes par jour (24 * 60 *60) et permet de
convertir une fraction de journée (Now - Debut) en secondes.



merci papou :)
dis moi si j'abuse ;) mais j'ai encore une question :)
peut on dire a une macro de lancer d'autre macro mais avec un timer car je
veux que le format de A1 change continuellement apres la lecture du fichier
txt
je m'explique
macro1--->2sec---->macro2----->2sec----->macro3---->2sec---->retour a macro1
ps: la macro pour arreter ne marche pas :(
merci encore de ton aide, si je peux renvoyer l'ascenceur un jour ? (surtout
si j'y arrive :))
@+chris


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
papou
Bon, en dehors du fait que je trouve que ça commence à faire beaucoup de
choses à traiter en une secondes ;-)
j'avoue ne pas avoir encore "capté" ce dont il s'agit malgré tes efforts
certains ;-)
...mais je te rassure comme je l'ai indiqué plus haut, il faut que je parte
en vacances...
Si quelqu'un a compris qu'il nous vienne en aide !

Cordialement
Pascal

"chris" a écrit dans le message de
news:411c9e41$0$26550$
si je met la macro en avant derniere ligne elle va se lancer toutes les
secondes alors que je veux une macro differente (3) toutes les secondes
ceci

3 fois et apres revenir à la 1ere
exemple)

je lis le txt
je mets en format1
pause 1sec
je lis le txt
pause1sec
je lis le txt
je met en format2
pause 1sec
je lis le txt
pause1sec
je lis le txt
je met en format3
pause 1sec
je lis le txt
pause1sec
je reviens à la 1ere ligne

ce qui me permet d'avoir jr un txt rafraichis avec un format qui change ~
toutes les 2 sec
merci de ton aide et desolé si j'ai pas ete clair
@+