Accéder à la barre de progression dans la barre d'état d'une application Office
-
03-07-2019 - |
Question
Je crée des applications VBA pour Word et Excel. Est-il possible d'accéder à la barre de progression qui apparaît parfois dans la barre d'état Office?
La solution
Les éléments suivants simulent une barre de progression dans la barre d'état d'Excel:
Public Sub UpdateStatusBar(percent As Double, Optional Message As String = "")
Const maxBars As Long = 20
Const before As String = "["
Const after As String = "]"
Dim bar As String
Dim notBar As String
Dim numBars As Long
bar = Chr(31)
notBar = Chr(151)
numBars = percent * maxBars
Application.StatusBar = _
before & Application.Rept(bar, numBars) & Application.Rept(notBar, maxBars - numBars) & after & " " & _
Message & " (" & PercentageToString(percent) & "%)"
DoEvents
End Sub
Autres conseils
Je vous recommanderais en outre d’enregistrer l’état actuel de la barre d’état, puis de le restaurer une fois que tout est terminé.
Dim OldStatus
With Application
OldStatus = .DisplayStatusBar
.DisplayStatusBar = True
.StatusBar = "Doing my duty, please wait..."
End With
' Do what you do best here (you can refresh the .StatusBar message with updted, as needed)
With Application
.StatusBar = False
.DisplayStatusBar = OldStatus
End With
Je n’ai pas accédé à la barre de progression, mais j’avais utilisé par le passé quelque chose comme ceci pour placer le texte du statut de la tâche dans la barre d’état ...
Sub StatusBarExample()
Application.ScreenUpdating = False
' turns off screen updating
Application.DisplayStatusBar = True
' makes sure that the statusbar is visible
Application.StatusBar = "Please wait while performing task 1..."
' add some code for task 1 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = "Please wait while performing task 2..."
' add some code for task 2 that replaces the next sentence
Application.Wait Now + TimeValue("00:00:02")
Application.StatusBar = False
' gives control of the statusbar back to the programme
End Sub
D'après ce que j'en sais, il n'y a aucun moyen de reproduire la ligne bleue de points utilisée par Word & amp; Excel pour afficher les progrès réalisés vers 100%, par exemple lors de l'ouverture d'un fichier.
Je me souviens avoir vu un code le répliquer dans la barre d'état, mais c'était complexe, et je ne le recommanderais pas, alors qu'il est suffisant de dire "X% complete". dans la barre d'état, à l'aide de Application.StatusBar.