Une autre version de la barre d'evolution :
[syntax="ls"]Public Sub GEN_AfficherEvolution ( iNbrDocOk As Long, sMode As String, sMsg As String)
' sMode = "INIT" ou "" ou "FIN"
' En mode "INIT" iNbrDocOk doit etre egale au nombre de doc à traiter
' Sinon iNbrDocOk doit etre egal au nombre de docs traités
' Variables pour l'evolution
Dim iEvolPourCent As Single
Dim sEvolPourCent As String
Dim iEvolAvancement As Single
Dim i As Integer
Dim sBarre As String
' Variables pour l'estimation du temps
Dim vTempEcoule As Variant
Dim sTempEcoule As String
Dim sTempEcouleSec As String
Dim sTempEcouleMin As String
Dim sTempEcouleH As String
Dim lTempEnSec As Long
Dim lTempRestant As Long
Dim lTempRestantSec As Long
Dim lTempRestantMin As Long
Dim lTempRestantH As Long
Dim sTempRestantSec As String
Dim sTempRestantMin As String
Dim sTempRestantH As String
Dim sTempRestant As String
Static sNow As String
Static iNbrDoc As String
If sMode = "FIN" Then
Print "End Process"
Exit Sub
End If
If Ucase$(Left$(sMode, 3 )) = "END" Then
Print sMode
Exit Sub
End If
If sMode = "INIT" Then
sNow = GEN_DH_NowFormater ()
iNbrDoc = iNbrDocOk
Else
iEvolPourCent = 0
iEvolAvancement = 100/iNbrDoc
If iEvolAvancement * iNbrDocOk > 100 Then
iEvolPourCent = 100
Else
iEvolPourCent = iEvolAvancement * iNbrDocOk
End If
sBarre = ""
For i = 1 To Int (iEvolPourCent)
sBarre = sBarre + "|"
Next i
For i = Int (iEvolPourCent) To 99
sBarre = sBarre + "'"
Next i
vTempEcoule = Time - Timevalue (sNow)
lTempEnSec = Hour (vTempEcoule) * 3600 + Minute (vTempEcoule) * 60 + Second (vTempEcoule)
lTempRestant = Int ((lTempEnSec / iNbrDocOk) * (iNbrDoc - iNbrDocOk))
lTempRestantH = Int (lTempRestant/3600)
lTempRestant = lTempRestant - 3600 * lTempRestantH
lTempRestantMin = Int (lTempRestant/60)
lTempRestant = lTempRestant - lTempRestantMin * 60
lTempRestantSec = lTempRestant
sTempRestantH = Trim$(Str$ (lTempRestantH))
sTempRestantMin = Trim$(Str$ (lTempRestantMin))
If lTempRestantMin < 10 Then
sTempRestantMin = "0" + sTempRestantMin
End If
sTempRestantSec = Trim$(Str$ (lTempRestantSec))
If lTempRestantSec < 10 Then
sTempRestantSec = "0" + sTempRestantSec
End If
sTempEcouleH = Trim$(Str$ (Hour (vTempEcoule) ))
sTempEcouleMin = Trim$(Str$ (Minute (vTempEcoule)))
If Minute (vTempEcoule) < 10 Then
sTempEcouleMin = "0" + sTempEcouleMin
End If
sTempEcouleSec = Trim$(Str$ (Second (vTempEcoule)))
If Second (vTempEcoule) < 10 Then
sTempEcouleSec = "0" + sTempEcouleSec
End If
sTempRestant = sTempRestantH + "h " + sTempRestantMin + "min " + sTempRestantSec + "sec"
sTempEcoule = sTempEcouleH + "h " + sTempEcouleMin + "min " + sTempEcouleSec + "sec"
sEvolPourCent = Trim$(Str$ ( Int (iEvolPourCent)))
If iEvolPourCent < 10 Then
sEvolPourCent = "0" + sEvolPourCent
End If
Print sMsg & " : " & sBarre & " " & sEvolPourCent & "%" & " -- Remaining time : " & sTempRestant & " -- Passed time : " & sTempEcoule
If iNbrDoc = iNbrDocOk Then
sBarre = ""
For i = 0 To 99
sBarre = sBarre + "|"
Next
Print "Evolution : " + sBarre + " 100%"
End If
End If
End Sub
[/syntax]