Refresh ?

Signaler
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009
-
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
73
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)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
73
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)
Messages postés
109
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
22 mai 2009

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..;