Procedure à temps d'execution élevé raffraichissement affichage

bigmousse

XLDnaute Occasionnel
Bonjour,
Lorsque j'ai une procedure VBA qui dure (l'ordre de la minute), Excel se bloque et ne m'affiche le resultat seulement à la fin.
Dans le cas où je veux placer un statut ou un progress bar, ce dernier est inutile puisque excel ne repond pas et le raffraichissement de l'écran ne s'effectue pas.

Il ya t'il une option sous vista ou ailleur qui permet de laisser Excel executer sa tâche sans qu'il soit détecté comme un programme qui ne reponds pas.
Merci
mousse
 

Pierrot93

XLDnaute Barbatruc
Re : Procedure à temps d'execution élevé raffraichissement affichage

Bonjour,

peut être une piste, dans ton code tu n'aurais pas une ligne comme celle-ci ...
Code:
Application.ScreenUpdating = False

si c'est le cas, c'est elle qui bloque la mise à jour de l'écran, supprime la... par contre l'exécution de ton code risque d'être moins rapide...

bonne journée
@+
 

bigmousse

XLDnaute Occasionnel
Re : Procedure à temps d'execution élevé raffraichissement affichage

Merci,mais c'est pas du tout ce que je veux, au contraire j'aimerai que Vista ou Excel ne se bloque pas à l'execution d'une procedure, et j'aimerais voir évoluer mon statut bar en bas à gauche.
Mais lorsque j'execute cette procedure, au bout de quelque seconde apparait en haut à gauche de la fenêtre Excel : Ne reponds pas, et l'affichage ne se raffraichit pas alors que la procedure suit son cours.
Que faire???? :confused:
Merci
mousse
 

jeanpierre

Nous a quitté
Repose en paix
Re : Procedure à temps d'execution élevé raffraichissement affichage

Bonjour bigmousse, Pierrot,

Moralité, et surtout dans ce cas, ne pas mettre de progressbar... Ca bouffe de la mémoire et du temps inutillement.

Il y a assez d'autres problèmes qui font qu'Excel puisse ne pas répondre pendant quelques instants ou minutes....

Bien les gadjets mais il faut choisir ou faire beau ou travailler.

Bon après-midi.

Jean-Pierre
 

bigmousse

XLDnaute Occasionnel
Re : Procedure à temps d'execution élevé raffraichissement affichage

Merci pour vos reponses, je m'excuse mais j'ai mal formulé...
Je parle de statut bar et non de progresse bar.
Seulement même si il n'y a pas cette option, ma procedure s'execute alors qu'excel m'affiche en haut à gauche ( ne reponds pas) ensuite après quelques minutes àla fin de la procedure tout devient normal.
Je vais vous poster un exemple, le temps de le construire.
Mousse
 

bigmousse

XLDnaute Occasionnel
Re : Procedure à temps d'execution élevé raffraichissement affichage

Voici mon exemple, vous allez voir en bas à gauche un compteur qui s'incremente en fonction de l'avancement de l'analyse.
Lorsque j'aiplus de vingt mille valeur à analyser j'ai merais que l'utilisateur puisse voir la progression, mais Excel se bloque et l'affichage n'est pas renouveler avant la fin de la procedure. (environ 4 minutes)
Merci
mousse
 

Pièces jointes

  • EX4.xls
    48.5 KB · Affichages: 177
  • EX4.xls
    48.5 KB · Affichages: 173
  • EX4.xls
    48.5 KB · Affichages: 156
Dernière édition:

bigmousse

XLDnaute Occasionnel
Re : Procedure à temps d'execution élevé raffraichissement affichage

J'ai reduit un max
La prochaine fois, j'enverrais 20€ vous le meritez bien

Voilà en effet j'ai éliminé pas mal de chose,
Volume_mag est ma base : environ 20000 lignes et surtout plein de doublon
Dans tableau de bord des références uniques.
En bas à gauche, j'utilise une sorte de statut bar (compteur qui s'increment jusqu'au nombre de ligne de ma base pour le moment que je transformerais en pourcentage à la fin.
Je reste à votre disposition pour tous autres informations.
à bientôt
mousse
 

Pierrot93

XLDnaute Barbatruc
Re : Procedure à temps d'execution élevé raffraichissement affichage

Re,

désolé mais je ne comprends pas trop toutes tes boucles et le résultat attendu... et vois pas trop comment reproduire ton problème... essaye peut être la fonction "DoEvents" après la modif de la barre d'état, cela redonnera la main au système d'exploitation, pas d'autre solution pour le moment :

Code:
      Application.StatusBar = y
      DoEvents

bon courage...
@+
 

bigmousse

XLDnaute Occasionnel
Durée d'execution

ah oui, merci Pierrot avec le doEvents, ça marche et en plus, je suis libre sur les feuilles excel pendant que ma procedure se déroule..
Le temps d'execution est toujours de 4 minutes et si quelqu'un avait un truc ou une piste pour le rendre plus rapide, je suis preneur.
Ah oui Jean Pierre le fichier joint plus complet ci-dessus (si tu enleves le doevents dans le code tu verras que ça va bloquer..., et pour le progress bar c'est seulement pour calmer l'utilisateur pendant l'analyse qui dure trop longtemps.
Merci le forum
à+
 

jeanpierre

Nous a quitté
Repose en paix
Re : Durée d'execution

Re,

Je n'ai pas ouvert ton fichier, je suis sous 2000 et le convertisseur me mange trop de mémoire....

Maintenant je me dis ceci : on peut toujours faire mieux et gagner en temps selon comment on code en VBA... mais je me dis aussi qu'il faut comparer avec ce que l'on pourrait faire à la mano.....

Pour l'utilisateur, un simple MsgBox pourrait suffire.

Jean-Pierre