Bonsoir à tous,
J'ai une procédure glanée sur le web (auteur : sylvanu ; forum : excel-downloads) permettant d'exécuter une progressbar dans un statusbar. J'utilise cette macro-enfant dans une boucle de ma macro-parent.
La croissance de cette progressbar et l'utilisation en boucle de doevents est gourmande en temps. Je souhaite intégrer en plus d'un calcul de progression du type progress = i / total , une temporisation basée sur l'horloge système afin de ne traiter qu'une fois par seconde (par exemple).
Je suis fatigué et je tourne autour du pot, le truc m'échappe. Je pressens surement une variable publique contenant un Timer initial, l'utilisation de Application.ontime ce genre de truc..
Je ne veux pas que cela gel l'exécution de la macro-parent ni pendant (et je le sens venir... ni à la toute fin de la boucle i(=total)/total)
Avez-vous une idée ? Merci d'avance
Sub ProgressbarStatusBar(Titre, Valeur, Total, Optional tempo% = 0)
'*** ProgressBar dans StatusBar
Dim déclenche As Boolean
Dim pourcent, plein, vide, tpsb!
déclenche = False: tpsb = Timer
If Titre = "" Then
Application.StatusBar = ""
ElseIf tpsb + tempo >= Timer Then
déclenche = True
tpsb = Timer
End If
If déclenche Then
pourcent = Int(100 * Valeur / Total) ' Calcul du % d'avancement
plein = Int(50 * Valeur / Total) ' Calcul du nombre de pavés pleins
vide = 50 - plein ' Déduction du nombre de pavés vides ( pour faire 50 au total )
Application.StatusBar = Titre & " - Progression : " & pourcent & "% " & _
WorksheetFunction.Rept(ChrW(9608), plein) & _
WorksheetFunction.Rept(ChrW(9618), vide)
DoEvents
End If
End Sub