progressebar pour déroulement d'une macro qui en contient elle même plusieurs

nicobart

XLDnaute Nouveau
Bonjour à tous,

j'ai un fichier qui contient une macro assez longue (comprenant elle aussi plusieurs macros et sous macros à l'interieur) (temps de traitement de la macro = 2').

même en ayant fait du ménage sur ce fichier je n'ai pas réussi à le rendre assez petit pour l'envoyer. Je vais donc essayer d'expliquer mon problème assez clairement.

je cherche à utiliser une progressbar qui montre le déroulement de cette macro pour avertir l'utilisateur du niveau d'avencement lorsque j'appuie sur un bouton.

J'ai récupéré sur internet un fichier (ci-joint) qui comporte une progressbar qui fonctionne (barreprogression.xls).
J'aurais aimé l'adapter à (mon fichier.xls)

Apparemment, il faut une boucle (for,,,,next) pour que la progressbar puisse fonctionner et je ne sais pas comment définir cette boucle vu que ma macro contient plusieurs macros.


J'espère avoir été assez clair dans mes explications.
ex :

sub macro1 ()
macro2
macro3
macro4
macro5
end sub

les macros 2 3 4 5 sont très diversifiées (certaines peuvent parfois déjà contenir des boucles, d'autres pas, certaines font de la mise en formes, d'autres de la création de feuilles et d'objets,,,,,,)

Merci d'Avance
 

Pièces jointes

  • barreprogression.zip
    30.9 KB · Affichages: 35
  • barreprogression.zip
    30.9 KB · Affichages: 38
  • barreprogression.zip
    30.9 KB · Affichages: 36

Orodreth

XLDnaute Impliqué
Re : progressebar pour déroulement d'une macro qui en contient elle même plusieurs

Bonjour nicobart

Personnellement, j'utilise une astuce pour mes progressar, ne sachant pas trop bien m'en servir.

Quand je lance mon USF, j'initialise la valeur à 0, et le max est "compté".
Pourquoi compter ? à chaque fois que j'appelle une procédure ou une fonction (ou aussi à chaque fois que tu boucles dans un code, mais si tu utilises des boucles non prédéfinies, c'est super chiant), tu incrémentes ta progressbar de 1.

A la fin de ton programme, la progressbar a atteint la bonne valeur, et voila :)

C'est du bidouillage (monstrueux certes), mais ça marche, et pour des utilisateurs lambda, l'illusion est parfaite :)

Cordialement,
Thomas
 

nicobart

XLDnaute Nouveau
Re : progressebar pour déroulement d'une macro qui en contient elle même plusieurs

je te remercie de ta réponse, je vais essayer de travailler sur cette piste.
Aurais-tu par hasard un exemple concret pour m'eclairicir un peu plus.
Merci encore.

Cordialement
Nicolas
 

Orodreth

XLDnaute Impliqué
Re : progressebar pour déroulement d'une macro qui en contient elle même plusieurs

Re.

Concret, non, mes programmes sont trop lourds pour être postés ici.

En gros, dans mes programmes, je me sers d'un bouton pour ma procédure principale.
Donc à chaque fois que j'ai besoin de faire une action spécifique ou calculer un résultat par rapport à une fonction donnée, j'appelle une procédure ou une fonction.

En code, ça donne quelque chose comme ça

Code:
Private sub userform_initialize()
with pgb1
     .min = 0
     .value = 0
     .max = 6
end with
end sub

private sub cmdButton1_clik()
Call procédure1
pgb1.value = pgb1.value + 1
Call procédure2
pgb1.value = pgb1.value + 1
Call procédure3
pgb1.value = pgb1.value + 1
Call procédure4
pgb1.value = pgb1.value + 1
monResultat = Fonction1
pgb1.value = pgb1.value + 1
monResultat = Fonction2
pgb1.value = pgb1.value + 1
end sub

Le nombre d'appel dans ma procédure principale étant égal à 6, la propriété max de ma pgb est égal à 6.
C'est du comptage manuel :(

J'espère que cela t'aidera :)
Thomas
 

Statistiques des forums

Discussions
312 502
Messages
2 089 033
Membres
104 010
dernier inscrit
Freba