[Debutant] Lancement regulier d'une tache, pb avec do/loop [Résolu]

Signaler
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Statut
Membre
Dernière intervention
16 juillet 2009
-
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
-
Salut a tous,

J'ai un petit pb :

Je fait un chtit prog qui me lance une tache toute les 1/2 heures. J'utilise pr cela cette fonction :

Dim minute, minutefix As Integer
Dim pathwow, pathwdb As String
minutefix = Mid(Time, 4, 2)
pathwow = Dir1.Path
pathwdb = Dir1.Path & "\wdb\*.*"



Do


minute = Mid(Time, 4, 2)If minute minutefix Or minute minutefix + 30 Then

supprimerfichier (pathwdb)


End If


Loop

La fonction supprimerfichier est une public sub qui fonctionne tres bien, mes paths sont ok.

Le problème est le suivant : lorsque je lance le programme (il tourne dans le systray) eh ben je ne peux plus l'arreter, normal puisqu'il est sous do/loop.

N'existe-t-il pas une alternative à cette fonction ? Est ce que incrémenter un compteur avec un timer me permettra d'arreter le programme quand je veux ?

Merci :)

ZeGuizmo

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Pour ton test rajoute un DoEvents dans le Do-Loop, à la fin par exemple



Chez moi, effectivement le code équivalant à supprimerfichier s'éxecute en boucle pendant toute la minute


Sinon tu peut essayer ce code en collant un timer avec un interval de 10000



Private Sub Timer1_Timer()

Static cnt_timer As Integer



If cnt_timer >= 180 Then



cnt_timer = 0

supprimerfichier()

Else



cnt_timer = cnt_timer + 1



End If

End Sub



---> 180*10000 ms ça fait 30min je crois



<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Lors de la conception de ta feuille tu prend soin donc pour ton object
Timer de mettre les propriétés Interval sur 10000 et Enabled sur False



Ensuite sur l'évènement de ton bouton "Mache" tu fais : Timer1.Enabled=True


Ensuite sur ton menu dans le systray tu fait Timer1.Enabled=False
pour arreter le timer et tu peux sortir de ton programme comme tu veux




<hr size="2" width="100%">Si le cerveau était assez simple pour que nous puissions le comprendre,

nous serions assez bête pour ne pas le comprendre malgré tout.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 152 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
28
marche avec un Timer.Interval sous-multiple de 30 minutes

Private Sub Timer1_Timer()
' Text1 = Time
If (Time * 48) = Fix(Time * 48) Then
supprimerfichier (pathwdb)
End If
End Sub

Daniel
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut,

Si tu tiens à ton do ... loop, insère un test :

dans un module : public test as boolean

dans ton do ... loop : if test = true then exit do

je suppose que tu as un menu sur ton icone systray donc tu ajoutes un item "Arrêter" dans lequel tu mettras : test=true.

Sinon, un timer fera la même chose mais n'enlèvera pas l'obligation de le désactiver dans l'item du menu systray par timer.interval=0

Loup Gris
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Merci pour vos réponses,

Je tiens a mon do/loop (parcequ'en fait j'ai pas compris le *48 du timer, je c pas si c pr l'exemple ou quoi .. et en plus je veux minimiser les calculs)

Mais j'ai encore un pb, euhh deux en fait.

Premièrement, quand je regarde ma source je me dis que pendant une minute (celle qui correspond a la demie heure d'écoulée) il devrait me supprimer mes fichiers continuellement (ou si je lui demande de m'afficher une msgbox, il devrait m'en afficher plein pendant une minute non ?) et pourtant il ne le fait pas.
En fait je ne veux pas que cela se produise mais pourquoi ca ne se produit pas ?

Deuxièmement, j'ai beau rajouter un test, je ne peux meme pas cliquer sur l'icone de mon systray, le prog tourne tt seul dans son do/loop et ne fait rien d'autre, pas meme m'afficher les menus quand je clique sur l'icone)

Voila mci pr vos éclaircissements

A+

ZeGuizmo
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Alors, commence par mettre doevents dans ta boucle do ... loop.
Au moins ça permettra au systeme de gérer autre chose.

Loup Gris
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Statut
Membre
Dernière intervention
16 juillet 2009

Euhhh en fait j'ai jamais utilisé de Timer, comment je fait pour que quand je clique sur un bouton mon timer se lance ?

ZeGuizmo
Messages postés
138
Date d'inscription
vendredi 1 août 2003
Statut
Membre
Dernière intervention
16 juillet 2009

ah ok, tout simplement, je vous remercie bien pour les réponses fournies parcequ'elles m'ont toutes aidées :)

Juste le bouton reponse acceptée sert a quoi ? Parceque si c pr svous gagner des pts ou autres, je les accepte tous, elles m'ont toutes ete utiles.

ZeGuizmo
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
C'est pas pour gagner des points, c'est pour que ce soit plus facile a se retrouver dans le forum.

Une solution trouvée a un problème = ligne en vert dans le forum

@+

--------------------------------------------------------------------------------
Phantom_2005