Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3015 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] Afficher le temps qui s'écoule pendant un traitement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Afficher le temps qui s'écoule pendant un traitement

n°1571493
belsuncett​e
Posté le 07-06-2007 à 13:14:05  profilanswer
 

Voici mon problème :
dans une application en VB6, je voudrais afficher quelquechose de ce genre pendant le traitement d'une tâche assez longue (20 minutes) : "temps écoulé : __:__:__" avec évidemment le temps écoulé depuis le début qui s'affiche et progresse au fur et à mesure.
je pensais faire ça :  
- avoir une variable Debut qui enregistre l'heure de début de la tâche
- avoir un timer qui toutes les secondes affiche le résultat de (Now - Debut) dans le message "temps écoulé"
 
mais j'ai un peu de mal avec le timer, parce qu'il faudrait qu'il fonctionne en boucle pendant que cette tâche de 20 minutes s'effectue....est-ce possible ? ou s'il y a un autre moyen de faire ce que je souhaite, je prends aussi....
merci d'avance  :sarcastic:


Message édité par belsuncette le 08-06-2007 à 10:35:44
mood
Publicité
Posté le 07-06-2007 à 13:14:05  profilanswer
 

n°1571520
merenptah4​4
Posté le 07-06-2007 à 13:38:55  profilanswer
 

tu fais une deuxième macro que tu lances en même temps que ta tache,  
je sais pas si c'es tfaisable mais du genre macro evenementielle, s'il detecte l'appel de ta macro de calcul alors il lance la macro chrono.
 


Message édité par merenptah44 le 07-06-2007 à 13:48:58

---------------
Un pur groupe de musique à connaitre avant tout le monde :http://perso.numericable.fr/~bebrault/hollymess (site down pour le moment)
n°1571524
belsuncett​e
Posté le 07-06-2007 à 13:46:39  profilanswer
 

Je connais les macros en excel, mais pas en VB ?  
Sinon pour l'instant je tente une solution un peu brute : j'ai une barre de progression dans la tâche, aussi, donc j'actualise le temps écoulé en même temps que j'incrémente la barre de progression ; je suis en train de voir si ça actualise assez souvent pour paraître se faire toutes les secondes....
Solution de secours, mais si y'a mieux, je prends toujours !
Merci merenptah

n°1571526
merenptah4​4
Posté le 07-06-2007 à 13:50:10  profilanswer
 

à priori du devrais trouver ton bonheur ici (suaf que c'est du vba, alors je sais pas, je connais pas VB tout seul...):  
http://www.developpez.net/forums/s [...] hronometre
(désolé pour la pub extérieure)


Message édité par merenptah44 le 07-06-2007 à 13:50:34

---------------
Un pur groupe de musique à connaitre avant tout le monde :http://perso.numericable.fr/~bebrault/hollymess (site down pour le moment)
n°1571528
merenptah4​4
Posté le 07-06-2007 à 14:03:52  profilanswer
 

je veins d'essayer le code sur le lien que j'ai filé, je suis pas sure que ça fais ce que tu voudrais car comme c'est dans un userform, on peut pas utiliser ce qui se passe derrière.
De plus, il affiche le temps que lorsqu'on clique sur arrivée (mais bonça c modifiable assez facileemnt, lecode est assez simple)
la recherche continue,  
essaye à mon avis de chercher un code horloge plutôt que chronomètre, ça doit se trouver
http://vlohr.free.fr/Forum_VeriTi/forum_1.php?msg=4078
 
désolé pour l'aide un peu pourrie que j'apporte, je ferai mieux de retourner bosser


Message édité par merenptah44 le 07-06-2007 à 14:08:09

---------------
Un pur groupe de musique à connaitre avant tout le monde :http://perso.numericable.fr/~bebrault/hollymess (site down pour le moment)
n°1571539
kiki29
Posté le 07-06-2007 à 14:15:41  profilanswer
 
n°1571603
belsuncett​e
Posté le 07-06-2007 à 15:34:07  profilanswer
 

Bon...merci pour l'aide mais rien de concluant pour moi (à chaque fois dans les pages proposées j'ai du mal à déterminer si c'est adaptable à ma situation). En tout cas, merci.
J'ai cependant un problème avec ma "solution alternative" : normalement, j'actualise le temps en meme temps que j'incrémente ma progress bar. Si j'exécute le code en pas à pas, ça va, mais si je le lance en exécution normale, le texte n'apparaît pas, même avant toute boucle où j'affiche simplement "temps écoulé " sans valeur :(
Je me dis que ça va trop vite pour être actualisé, peut être ; ou que c'est le PC qui rame trop (déjà la progress bar plante souvent)....
Help ?

n°1571607
tegu
Posté le 07-06-2007 à 15:37:41  profilanswer
 

Oui ça va trop vite pour être actualisé.
Du coup il faut faire un DoEvents dans ta boucle pour permettre le rafraichissement.
Et le DoEvents ralentit pas mal en général...

n°1571608
kiki29
Posté le 07-06-2007 à 15:38:36  profilanswer
 

Sans code pas facile de résoudre ton probleme : peut-être via MP ?
sinon un DoEvents à placer judicieusement ?

n°1571624
belsuncett​e
Posté le 07-06-2007 à 15:51:41  profilanswer
 

La fonction est assez longue et je ne sais pas si c'est intéressant de tout mettre. Voilà le code qui peine à s'effectuer apparemment :
 
- temps_courant et temps_depart sont de type Date
- Text1 est une TextBox
- rs est la requete (liée à une base access) qui est effectuée, avec des petits traitements supplémentaires dans l'appli VB.
 
/'code
temps_courant = Now - temps_depart
    Text1.Text = "Temps écoulé : " & Format(temps_courant, "hh:mm:ss" )
    ProgressBarPA.Value = ProgressBarPA.Value + 1
    rs.movenext
code,/
 
Sachant que le max de ProgressBarPA est de l'ordre de 13 000...ça prend du temps et je fais ces opérations à chaque movenext.
Ce bout de code est présent à 3 endroits, car la fonction (que je trouve peu optimale mais je ne l'ai pas écrite ;) ) semble parcourir 3 fois le tableau résultat de la requete.
Dis moi si ces éléments te suffisent ?  
Et pour le DoEvents je ne sais pas si j'ai bien compris le principe mais je ne pense pas pouvoir le faire 13000 fois pour laisser le texte s'afficher..? J'imagine que ça ralentirait encore plus le traitement.

mood
Publicité
Posté le 07-06-2007 à 15:51:41  profilanswer
 

n°1571628
belsuncett​e
Posté le 07-06-2007 à 15:57:37  profilanswer
 

Un test avec un petit nombre de réponses à la requête fonctionne, ça doit donc venir de ça....mais je ne vois pas quoi faire, du coup.

n°1571662
kiki29
Posté le 07-06-2007 à 16:42:38  profilanswer
 

ne rafraichir via DoEvents que modulo 1000 par exemple ?

n°1571740
ladislas26​09
Posté le 07-06-2007 à 18:12:36  profilanswer
 

Salut,
 
Je vais essayer de te répondre mais ça fait un bout de temps que je touche plus à vb.
 
Normalement, si tu pose un timer sur ta form en le réglant sur 1000, tu le lance en même temps que ta fonction, toutes les secondes, la proc de ton timer doit s'éxécuter.
il faut donc traiter le temps écoulé dans la procédure (timer_ontime ou un truc du genre)
 
en déclarant une variable globale qui conserve l'heure du début, et en récupérant l'heure actuelle, tu n'a plus qu'à faire un datediff pour trouver le temps écoulé.
 
n'oublie pas le doevents dans ta fonction pour pas bloquer le timer et de l'arrêter à la fin de ta fonction.

n°1571785
belsuncett​e
Posté le 07-06-2007 à 19:00:30  profilanswer
 

J'essaierai ça - demain car je n'ai pas accès aux sources de chez moi.  
Je ne connais pas grand chose au DoEvents, et MSDN n'a pas été mon amie là-dessus, est-ce que vous pouvez précisez ce que je devrais faire avec la fonction ici ?

n°1571905
kiki29
Posté le 07-06-2007 à 22:30:28  profilanswer
 

A la ...


        .....
        ProgressBarPa.Value = ProgressBarPa.Value + 1
        If ProgressBarPa.Value Mod ???? = 0 Then
            Temps_Courant = Now - Temps_Depart
            Text1.Text = "Temps écoulé : " & Format(Temps_Courant, "hh:mm:ss" )
            DoEvents
        End If
        .....


???? à tester  


Message édité par kiki29 le 08-06-2007 à 05:00:56
n°1571906
belsuncett​e
Posté le 07-06-2007 à 22:35:25  profilanswer
 

Merci beaucoup, je teste ça demain à l'aube (enfin quand j'embauche quoi :p) et je te dis ce que ça donne.  
Merci de m'aider tous les ans :D

n°1571961
belsuncett​e
Posté le 08-06-2007 à 09:00:04  profilanswer
 

Ca marche :) je suis en train de chercher la limite minimum de fonctionnement pour que ça s'actualise le plus souvent possible.....
Merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Résolu] Afficher le temps qui s'écoule pendant un traitement

 

Sujets relatifs
boucle for a l'interieur d'un select case possible en vb6?[RESOLU][Batch] [Résolu]Analyse d'une chaine de caractères + redimensionnement
[Résolu] eclipse exporter option -Xmx500m[Resolu] taille de base de données oracle
(RESOLU) diminution du temps d'execution [VBA EXCEL][RÉSOLU] requête MySQL select prochains évènements
[résolu] Problème d'include chez Free mais pas en local[VBA] [Résolu] Partager des variables entre plusieurs userform
[RESOLU] PHP Modification 
Plus de sujets relatifs à : [Résolu] Afficher le temps qui s'écoule pendant un traitement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR