Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 :
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.
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 :
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 :