OVH Cloud OVH Cloud

Barre de progression pendant un traitement...

1 réponse
Avatar
Yvan
Bonjour,

Comment faire apparaitre une barre de progression représentant l'avancement
du traitement en cours ?

Est-ce également possible de figer l'écran en arrière-plan et de ne faire
avancer que la barre de progression ?

--
Merci pour vos réponses.

1 réponse

Avatar
Hervé
Bonsoir Yvan,
Un truc tout simple, tu utilise un UserForm sur lequel tu pose 2 contrôles
Label, le premier tu le nomme LblFond et le second LblProgress. Tu les pose
l'un sur l'autre (attention à l'ordre, LblFond doit être derrière). leur
propriétés Top et Left à l'identique. Défini la propriété BorderStyle de
LblFond comme il te plait (avec bordure ou non) et donne lui une couleur
(BackColor), blanc par exemple et pour LblProgress, bleu ou autre. Une fois
ceci fait, défini la propriété Width de LblProgress à 0. Pour le test, pose
un bouton sur la form et colle le code ci-dessous dans le module de la form
et clique sur le bouton :

Private Sub CommandButton1_Click()
Dim I As Long, J As Double
For I = 1 To 1000000
Progression I, 1000000
DoEvents
J = J + I
Next I
End Sub

Sub Progression(ByVal Valeur As Double, _
ByVal Maxi As Double)

Dim R As Double

R = LblFond.Width / Maxi
LblProgress.Width = Valeur * R
If Valeur = Maxi Then LblProgress.Width = 0

End Sub

Il est bien évident qu'il te faut connaître la valeur maximale (dans
l'exemple 1000000). Si ton traitement est dans une boucle, c'est facile,
sinon, il te faut définir un maximum de façon arbitraire et appeler la Sub
"Progression" à différents endroits de ton code en passant une valeur qui
représente bien la progression du traitement, ensuite tu peux fermer la
form. Exemple :

Private Sub CommandButton1_Click()
Progression 10, 100
MsgBox "Progression : " & 10
Progression 20, 100
MsgBox "Progression : " & 20
Progression 30, 100
MsgBox "Progression : " & 30
Progression 40, 100
MsgBox "Progression : " & 40
Progression 50, 100
MsgBox "Progression : " & 50
Progression 60, 100
MsgBox "Progression : " & 60
Progression 70, 100
MsgBox "Progression : " & 70
Progression 80, 100
MsgBox "Progression : " & 80
Progression 90, 100
MsgBox "Progression : " & 90
Progression 100, 100
MsgBox "fini ;o)"
End Sub


Hervé.


"Yvan" a écrit dans le message de news:

Bonjour,

Comment faire apparaitre une barre de progression représentant
l'avancement
du traitement en cours ?

Est-ce également possible de figer l'écran en arrière-plan et de ne faire
avancer que la barre de progression ?

--
Merci pour vos réponses.