Page 1 sur 1

Barre de progression

MessagePublié: 19 Juil 2005 à 11:31
par Ex Stagiaire
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]

MessagePublié: 12 Oct 2005 à 14:25
par VastoMarine
Pourrait-on avoir plus de documentation concernant ce sujet ?

On mettons le code ?

Merci

MessagePublié: 26 Oct 2005 à 14:02
par Sylvain-PEPIN
Salut,

Comment fait on pour l'utiliser dans un script ? avec un call ?
merci,
Sylvain

MessagePublié: 26 Oct 2005 à 14:04
par Stephane Maillard
Bonjour,

Soit :
Call GEN_AfficherEvolution ( iNbrDocOk, sMode, sMsg)
Ou :
GEN_AfficherEvolution iNbrDocOk, sMode, sMsg

MessagePublié: 26 Oct 2005 à 14:25
par Sylvain-PEPIN
Argh ... j'ai un message dans la barre d'erreur de mon designer : "Not a sub or function name: GEN_DH_NOWFORMATER"
J'ai l'impression qu'il m'en manque un bout ... :cry:

MessagePublié: 26 Oct 2005 à 14:45
par Stephane Maillard
Re,

Effectivement, je crois que c'est sur le forum, mais si il faut relire tous les posts de Ex Stagiaire depuis 2002 on aura quelques Week End sur le site.

MessagePublié: 27 Oct 2005 à 12:39
par Sylvain-PEPIN
Salut Stéphane,

Laisses tomber :wink: , j'ai trouvé dans un autre post, un script qui fait trés bien l'affaire. A moins effectivement, que que ça interresse d'autres personnes...

Merci,
Sylvain

MessagePublié: 27 Oct 2005 à 12:42
par Stephane Maillard
Salut,

Bien sur tout m'intéresse. :wink:

MessagePublié: 27 Oct 2005 à 12:53
par Stephane Maillard

MessagePublié: 27 Oct 2005 à 12:57
par Sylvain-PEPIN
Y'avait un autre topic ici, avec pleins de liens ... je ne le retrouve plus ... :cry: Je ne sais plus si c'est Michael ou Oguruma qui l'avait publié ...je le recherche, j'vais bien le retrouver .... :twisted:

MessagePublié: 27 Oct 2005 à 18:03
par Stephane Maillard
Re,

Voilà les codes d'Ex Stagiaire fournit par MSN : [syntax="ls"]Public Function GEN_DH_NowFormater ( ) As String

Dim sNow As String
Dim sMois As String
Dim sJour As String
Dim sAnnee As String
Dim sHeure As String
Dim sMinute As String
Dim sSeconde As String

sMois = GEN_FormaterChaine ( Trim$(Str$ (Month ( Now ))), 2, "0", "RIGHT" )
sJour = GEN_FormaterChaine ( Trim$(Str$ (Day( Now ))), 2, "0", "RIGHT" )
sAnnee = Trim$(Str$ (Year ( Now )))
sHeure = GEN_FormaterChaine ( Trim$(Str$ (Hour ( Now ))), 2, "0", "RIGHT" )
sMinute = GEN_FormaterChaine ( Trim$(Str$ (Minute ( Now ))), 2, "0", "RIGHT" )
sSeconde = GEN_FormaterChaine ( Trim$(Str$ (Second ( Now ))), 2, "0", "RIGHT" )

GEN_DH_NowFormater = sJour + "/" + sMois + "/" + sAnnee + " " + sHeure + ":" + sMinute + ":" + sSeconde

End Function


Public Function GEN_FormaterChaine ( sVal As String, iNombre As Integer, sCar As String , sMode As String ) As String

Dim sValNew As String
Dim iLong As Integer
Dim iNbr As Integer

' sMode ="RIGHT" ou "LEFT"

sValNew = Trim$(sVal)
iLong = Len (sValNew)
iNbr = iNombre - iLong
If INbr = 0 Then
GEN_FormaterChaine = sValNew
Exit Function
End If
If iNbr > 0 Then
If sMode = "RIGHT" Then
sValNew = String$(iNbr, sCar ) + sValNew
Else
sValNew = sValNew + String$(iNbr,sCar )
End If
Else
If sMode = "RIGHT" Then
sValNew = Left$(sValNew, iNombre)
Else
sValNew = Right$(sValNew, iNombre)
End If
End If
GEN_FormaterChaine = sValNew

End Function
[/syntax]