Refresh ?

xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009 - 28 mai 2008 à 21:07
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009 - 28 mai 2008 à 21:29
bonsoir tout le monde !!

voila j'ai un probleme tute fois assez étange et j'aimerais savoir si l'un d'entre vous pouvait m'aider.
Je travaille en vba excel et j'ai créé un programme qui me permet de gérer ce fichier sans avoir a y toucher manuellement.

L'une des fonctions que j'ai du programmer fais une recherche (parcours du fichier et affichage du résultat dans une listview)
Cette recherche peut prendre asseez de temps, le fichier étant d'un volume non négligeable et etant amené a grossir encore.
C'est pourquoi j'ai intégré un label qui indique "recherche en cours" ou "recherche terminée".
Au chargement de ma feuille ce label est masqué  (.visible = false), puis au début de la recherche ( avant l'algo de traitement) je rend ce label visible, met sa couleur de fond en rouge, et le met a la valeur "en cours". Ensuite mon algo de recherche se lance, et a la fin de la recheche je change la couleur de fond de mon label en vert et lui met la valeur "terminée". 

Mon problème est que je ne vois jamais apparaite le label roue avec " en cours" meme quand ma recherche dure plus d'une minute. En revanche a la fin je vois le label vert " terminé" ( alors que le .visible a été initialisé au début ).
J'ai aussi fait un test, quand j'affiche un msgbox pendant la recherche ( ce qui fige donc mon algo jusqu'au clic sur ok ) je vois bien le label rouge :'(

Alors je voudrais savoir si quelqu'un a deja rencontré ce genre de problème et s'il peut m'aider.
Peut etre existe t-il aussi un moyen de rafraichir un label?
Ou peut etre meme avez vous encore un idée sur la manière de m'y prendre...

merci d'avance et bonne soirée
-xaeris-

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 mai 2008 à 21:19
Salut
C'est parce que ton processeur est occupé à 100% par ton traitement.
Il n'a pas le temps de s'occuper de l'affichage.
Si le traitement de ton fichier se fait par boucle (par exemple, lecture ligne après ligne), insère un "DoEvents" dans la boucle afin de laisser respirer le PC.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 mai 2008 à 21:22
Re
En contre partie, le traitement risque d'être un peu plus long.
Si tu ne veux pas trop te pénaliser, mets un DoEvents à chaque fois que tu modifie le contenu de ton Label et n'en mets pas dans ta boucle.
Mais, si tu veux pouvoir faire autre chose pendant le traitement comme ... l'arrêter, il faudra bien rendre la main au PC de temps en temps ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
xaeris Messages postés 109 Date d'inscription dimanche 18 décembre 2005 Statut Membre Dernière intervention 22 mai 2009
28 mai 2008 à 21:29
D'accord, je me doutais bien que c'était quelquechose dans ce gout la mais merci énormement de m'avoir donné la solution, je mettrais un doevents juste avant ma boucle et juste aprés, au moment ou je lance mes labels...
bonne soirée a toi
ps : normalement l'affichage devrait tout de meme se faire avant que l'algo de traitement ne se lance, puis que le changement des label est jsute avant l'algo; A moins qu'il fasse les deux, si prochent l'un de l'autre qu'il soit trop occupé pour l'affichage..;
0
Rejoignez-nous