-
ProgressBar (Timer)
Bonjour,
Je reviens vers le forum pour demander de l'aide à propos du developpement d'une progressBar.
Je souhaiterais implementer une ProgressBar dans mon application Access, pour montrer l'etat d'avancement du traitement.
Bon, j'ai mis en place des etiquettes pour afficher à chaque execution d'une fonction, le traitement effectué (du texte normal); et à chaque fois qu'un traitement est accomplie, la value de la progressbar augmente.
PAR CONTRE ! Je souhaiterais savoir s'il y'a moyen de montrer le temps estimé dans une progressBar ... voila ...
L'objectif ici est de montrer aux utilisateurs que le traitment est en cours et que ça bloque pas. Generalement, les users ici commencent à raler à la seconde où ça prends plus de 3 secondes . . . commencent à cliquer n'importe où ...etc..
Le resultat Attendu :
_________________________________
|********_________________________|
Temps ecoulé : X secondes
Temps estimé à : Y secondes
Temps restants : Z secondes
Progression : XX%
Traitements effectués : blabla
Cordialement !:ccool:
-
La réponse est "peut-être" tout déppend du traitement et comment tu le fais.
Peux-tu donner plus de détail sur ton formulaire.
Personnellement j'ai un gros formulaire qui dit "Merci d'attendre, traitement en cours.". C'est moins joli qu'une barre de progression mais c'est assez simple à implanter. Il est vrai que l'utilisateur n'a pas l'impression que l'ordi fasse grand chose. J'envisage d'y mettre un Gif annimé ou quelque chose du genre qui ne dépende pas de l'éxécution d'un code VBA mais je n'ai pas encore essayé.
A+
-
Salut,
ceci peut t'aider :fleche: http://arkham46.developpez.com/artic...s/formattente/
il suffit ensuite de donner l'état d'avancement.
En ce qui concerne le temps restant, comme le dit marot_r, que veux tu faire exactement.
Définir le temps restant cela implique d'avoir un temps de référence, si le traitement est toujours le même et n'influe pas en fonction de plusieurs paramètres passés pour le traitement et que les machines soient les mêmes.
Ceci est au risque d'avoir les minutes Windows dont la dernière dur des fois 5 min.
Pour ma part j'ai intégrer le principe d'arkham, légèrement modifié pour mon gout, en donnant une indication traitement par traitement.
@++
-
Bonjour,
Je vous remercie tt dabors pour vos reponse;
Apres quelques recherche sur internet, j'ai effectivement compris qu'il fallait dans un premier temps chronometrer le temps de traitement et l'avoir comme reference, et ensuite ajouter un timer dans une valeur temporaire, pour ensuite afficher dans le formulaire le le temps_chronometré - timer.
Mais bon, j'ai trouvé ça assez laborieux et "bricolé", c'est pour cela que je demande sur le forum s'il y'a une façon plus dynamique d'effectuer tt ceci.
Mon formualrei est simple, j'ai juste un bouton Executer et une progressBar. Quand l'utilisateur clique sur Executer, tout un traitement est effectué et l'utilisateur n'aura qu'attendre. Comme ce traitement à un moment donné traite +4000 lignes, à un moment donné, la fenetre Access devient alors en mode (ne reponds pas, mais la souris tourne), et apres traitement, redevient à la normal.
Le bouton effectuer contient comme code l'appelle à plusieurs fonction dans un ordre donné (au total 10 fonctions), c'est tt.
Le but ici est de montrer à l'utilisateur que le traitement est en cours et que ça ne bloque pas. Les utilisateurs en question sont du genre à cliquer n'impore où au moment où "il n'y a rien" ... Du coup, il serait pour moi sympatique d'implementer quelque chose de dynamique pour montrer que c'est vraiment en cours et qu'il faut attendre :zen: . Une gif serait pas mal aussi ...
Voila !
-
Tu pourrais peut-être utiliser l'événement minuterie du formulaire pour faire avancer ta barre de progression. Ex : toutes le seconde, tu redessinnes ton formulaire.
Mais hélàs, ça reste du bricolage.
De plus l'affichage n'est pas une priorité lors d'un traitement long donc il se peut très bien que ton formulare ne change pas malgrès ton code.
La commande DoEvents aide à forcer le rafraichissement de l'écran.
Pour le gif animé, ici une solution :
http://answers.yahoo.com/question/in...2094406AAyM3jx
A+
-
Hum si on se fit à cela http://www.access-programmers.co.uk/...ad.php?t=50585
L'utilisation de OnTimer n'est pas une solution viable.
A+