[MACRO EXCEL] barre de progression

gia17

XLDnaute Junior
bonjour à tous et à toutes,

après plusieurs recherches sur le forum je ne trouve pas réellement solution à mon problème...

Je cherche à créer une barre de progression (qu'importe le procédé) pendant l'exécution d'une macro..

Dans un document excel, j'ai différentes macro qui mettent plus ou moins de temps à s'exécuter... mais le temps d'exécution varie selon la macro et selon les ordinateurs...

Les macros durent entre 10 à 45secondes...certes ce n'est pas tellement long mais c'est juste pour avertir l'utilisateur que la macro s'exécute correctement... Les macros nécessitent de passer d'une feuille à une autre et cela plusieurs fois... pour une question d'esthétique, j'ai désactiver le rafraichissement de l'écran pour "figer" mon userform...

Existe-t-il un code vba pour afficher une barre de progression pendant l'exécution d'une macro sans avoir à spécifier une durée ?

Merci par avance à tous ceux qui prennent le temps de répondre sur ce forum,

Bonne journée,

cordialement

Gia17
 

Ubot303

XLDnaute Occasionnel
Re : [MACRO EXCEL] barre de progression

Bonjour à toi,

J'utilise aussi une Progress Bar sur la plupart de mes traitements lourds de macro... pour éviter que l'utilisateur fasse un ctrl + alt + suppr...

J'ai trouvé une Progress bar dans Microsoft ProgressBar Control, version 6.0 en cliquant dans la boîte à outil et en cliquant sur "Autres contrôles".

Des bémols cependant :
1) Comme il s'agit d'un ocx (je crois) "MSComctlLib", tu ne l'as pas forcément sur ton poste
2) Dans ton code, tu es obligé de "défreezer" ton écran, d'indiquer la progression, puis de "refreezer" ton écran.

Cela ne tient donc pas compte de la capacité machine ni du temps réel de traitement...

Lorsque j'effectue la première fois ma macro, je mets des timers pour repérer les tâches longues puis j'échelonne le temps global en plusieurs étapes et je répartis mes 100 unités de progress bar en fonction de celles qui prennent le plus de temps...

Comme tu le vois, ce n'est pas un simple contrôle à rajouter mais tout le paramétrage à faire derrière qui est barbe...

J'utilise des fois une simple feuille avec une indication que l'opération est en cours, ne quittez pas, l'opération est en cours, ne quittes pas, l'opération est en * bink msgbox "Traitement terminé" :D

bon courage en tous cas
 

gia17

XLDnaute Junior
Re : [MACRO EXCEL] barre de progression

merci ubot303

effectivement la solution d'afficher des messages parait plus simple...

mais la barre de progression fait "plus classe" ;-)

donc si dans ma macro j'ai plusieurs changement de feuilles, c'est difficile ? car je freezer l'écran pour que le changement de feuille ne se voit pas...

peut-on lancer deux macro en même temps ? une macro qui effectue les opérations et une autre macro avec une barre de progression ? ce serait plus facile...

Merci encore,

Bonne journée

Gia17
 

Ubot303

XLDnaute Occasionnel
Re : [MACRO EXCEL] barre de progression

Non pas deux macros en même temps.

Il faut que, dans ta macro, tu te repositionnes sur l'onglet de la progress bar, que tu defreeze, que tu ajoutes 5% sur la progress bar (avec la progressbar.value), que tu refreezes et que tu rebascules sur l'onglet suivant que tu voulais traiter...

En gros, il va te falloir sequencer tes traitements :)
Avec une notion de temps : tache 1= 20% du temps, tache 2 = 5% etc...
Pour avoir cette sensation de progresser uniformément en fonction du temps :)

edit @Guillaume : c'est à toi d'indiquer de combien ta progress bar doit augmenter.
Le contrôle ne sait pas le temps ni les données que tu es en train de traiter :)
 

Guillaumega

XLDnaute Impliqué
Re : [MACRO EXCEL] barre de progression

si le volume de données à traiter est identique, on connait au préalable la durée de traitement donc on peut réaliser par rapport au temps.
Sinon, il faut je suppose déterminer des paliers dans la progression de la macro : une fois arrivée à cette tâche, on indique n% etc.
++
 

gia17

XLDnaute Junior
Re : [MACRO EXCEL] barre de progression

merci à vous deux,

oulala c'est pas facile tout ca !!!!! ca va être galère de segmenté par palier pour faire progresser la barre...

je pensais qu'il existait une solution "automatique" !

merci encore à vous deux,

bonne aprem

Gia17
 

Ubot303

XLDnaute Occasionnel
Re : [MACRO EXCEL] barre de progression

Il n'existe aucune solution automatique.

L'ordinateur ne sait jamais le volume des tâches à effectuer, ni le temps qu'il pourra prendre, par avance.

Toutes les progress bar sont donc des "illusions" basées sur une constatation réelle.

@guillaume, oui je fais tourner une première fois ma macro segmentée et à chaque point d'étape préalablement déterminé, j'inscris dans une case le temps qu'il a fallu.
A la fin du traitement, j'ai donc un "mapping" des tâches en terme de temps et je peux faire une règle de 3 pour l'adapter à une echelle de ProgressBar :)
 

Discussions similaires

Réponses
5
Affichages
558
Réponses
12
Affichages
217

Statistiques des forums

Discussions
311 720
Messages
2 081 926
Membres
101 842
dernier inscrit
seb0390