Progessbar sous VBA

cs_FASH Messages postés 52 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 19 oct. 2004 à 15:28
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 19 oct. 2004 à 17:17
Bonjour à tous, j'ai un petit souci avec une progressBar; Pour résumer, mon programme fait une série de copier-coller de données dans Excel pour constituer un historique sur une autre feuille; La barre de progression est évaluer en fct de la dernière cellule que le programme remplit.

Mais la barre s'affiche directement à 100% au lieu de progresser en fct de l'éxécution du programme. Comment faire pour qu'elle progresse au fur et à mesure du programme??

Merci d'avance pour votre réponse.

Voici le programme

Dim nbraction As Integer
Dim nbrcellule As Integer

Load ProgressBar

With ProgressBar
.ProgressBar1.Scrolling = ccScrollingStandard
.Show False
End With

update_barre 0, "En cours..."

nbraction = 10
nbrcellule = 0

While Worksheets("test").Range("histow").Value = ""

'Cette cellule Worksheets("test").Range("histow").Value est la dernière cellule qui se remplit qd le programme principal a fini de tourner'

For nbrcellule = 1 To nbraction
nbrcellule = nbrcellule + 1
If nbrcellule Mod 1 = 0 Then
update_barre nbrcellule / nbraction * 100, "Encours " & Format(nbrcellule / nbraction, "0%") & "..."
End If
ProgressBar.ProgressBar1.Refresh
Next nbrcellule

'Ici s'exécute tout mon programme'

Wend
Unload ProgressBar
****************************************************
Private Sub update_barre(Newvalue As Single, Optional NewCaption As String)

With ProgressBar
If Not IsMissing(NewCaption) Then .Caption = NewCaption
.ProgressBar1.Value = Newvalue
If Newvalue = 0 Then .Repaint
End With

End Sub

FASH

1 réponse

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
19 oct. 2004 à 17:17
nbrcellule / nbraction * 100
vaut 0 ou 100

car la division nbrcellule / nbraction est entière (et vaut donc 0 ou 1).
Il faut utiliser des nombres de type Double

Manu
0
Rejoignez-nous