2 réponses
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
19
10 déc. 2002 à 16:31
10 déc. 2002 à 16:31
Salut,
En fait il faut mettre la progressbar à jour périodiquement
Voici un exemple:
1 form avec un bouton, un timer et un progressbar
Private Sub Command1_Click()
Me.Timer1.Enabled = False
Me.Timer1.Interval = 100 '0.1 secondes
Me.Timer1.Enabled = True
Me.ProgressBar1.Min = 0
Me.ProgressBar1.Max = 100 '10 seconde de progression
Me.ProgressBar1.Value = 0 'valeur de départ à 0 (barre vierge)
End Sub
Private Sub Timer1_Timer()
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
If Me.ProgressBar1.Value = Me.ProgressBar1.Max Then
'c fini, il faut arreter le timer pour eviter un débordement
Me.Timer1.Enabled = False
MsgBox "Fini"
End If
End Sub
A toi de l'adapter à ton critère d'avancement
Bon courage
En fait il faut mettre la progressbar à jour périodiquement
Voici un exemple:
1 form avec un bouton, un timer et un progressbar
Private Sub Command1_Click()
Me.Timer1.Enabled = False
Me.Timer1.Interval = 100 '0.1 secondes
Me.Timer1.Enabled = True
Me.ProgressBar1.Min = 0
Me.ProgressBar1.Max = 100 '10 seconde de progression
Me.ProgressBar1.Value = 0 'valeur de départ à 0 (barre vierge)
End Sub
Private Sub Timer1_Timer()
Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
If Me.ProgressBar1.Value = Me.ProgressBar1.Max Then
'c fini, il faut arreter le timer pour eviter un débordement
Me.Timer1.Enabled = False
MsgBox "Fini"
End If
End Sub
A toi de l'adapter à ton critère d'avancement
Bon courage
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
11 déc. 2002 à 04:22
11 déc. 2002 à 04:22
;-))
La réponse de beldyn est bonne, sauf qu'elle pourrait être plus détaillée ;-)))
Alors : Le timer, c'est un objet comme les autres (boutons, etc...)qui doit se trouver dans la barre d'outils des contrôles, il ressemble à un chronomètre, visuellement....
Sa particularité est de déclancher du code à des moments spécifiques quand il est activé, selon un intervalle de temps défini par sa propriété .Interval
Si tu pose cet objet dans ta forme, tu vas dans son code puis ce code se déclanchera à intervalle réguliers.... Mais il est invisible à l'exécution, ne panique pas....
Et si je devais rajouter quelque chose, je dirais que moi, j'utiliserai un fichier qui me récupérerai les temps moyens d'exécution de ta sub, pour mettre ensuite à jour le .Min et le .Max et faire évoluer le .Value ou le .Interval en fonction, ceci pour avoir des durées d'exécution cohérentes, au cas où tu distribuerais ton appli sur différentes machines.... Et aussi pour faire des stats... ;-)))
Sinon, Beldyn à dit l'essentiel... ;-)))
Wild and Free
La réponse de beldyn est bonne, sauf qu'elle pourrait être plus détaillée ;-)))
Alors : Le timer, c'est un objet comme les autres (boutons, etc...)qui doit se trouver dans la barre d'outils des contrôles, il ressemble à un chronomètre, visuellement....
Sa particularité est de déclancher du code à des moments spécifiques quand il est activé, selon un intervalle de temps défini par sa propriété .Interval
Si tu pose cet objet dans ta forme, tu vas dans son code puis ce code se déclanchera à intervalle réguliers.... Mais il est invisible à l'exécution, ne panique pas....
Et si je devais rajouter quelque chose, je dirais que moi, j'utiliserai un fichier qui me récupérerai les temps moyens d'exécution de ta sub, pour mettre ensuite à jour le .Min et le .Max et faire évoluer le .Value ou le .Interval en fonction, ceci pour avoir des durées d'exécution cohérentes, au cas où tu distribuerais ton appli sur différentes machines.... Et aussi pour faire des stats... ;-)))
Sinon, Beldyn à dit l'essentiel... ;-)))
Wild and Free
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
19
11 déc. 2002 à 09:40
11 déc. 2002 à 09:40
Désolé pour mon obscure réponse, il es vrai que je ne suis pas pédagogue pour un rond.
:-))
:-))
Amélie
>
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
11 déc. 2002 à 10:03
11 déc. 2002 à 10:03
J'ai posé la meme question sur le forum VBA de Microsoft...
Désolée de ne pas être un modèle de fidélité à CCM :-)))
voila ce qu'on ma répondu...
ProgressBar1.Min = 1 ' Remplissage Minimum
ProgressBar1.Max = 100 'Remplissage Maximum
For x = 1 To 100
ProgressBar1.Value = x 'Change le remplissage fonction X
Next x
***************************
J'ai juste rajouté au début de ce code :
Dim x as Integer
x= 1
alors là, la progressbar s'anime, mais en 1 seconde...
alors que ma macro dure 15'
est-ce que la progressbar d'adapte si par exemple la marco dure plus ou moins longtemps...
:-))))))
bonnes fêtes
Désolée de ne pas être un modèle de fidélité à CCM :-)))
voila ce qu'on ma répondu...
ProgressBar1.Min = 1 ' Remplissage Minimum
ProgressBar1.Max = 100 'Remplissage Maximum
For x = 1 To 100
ProgressBar1.Value = x 'Change le remplissage fonction X
Next x
***************************
J'ai juste rajouté au début de ce code :
Dim x as Integer
x= 1
alors là, la progressbar s'anime, mais en 1 seconde...
alors que ma macro dure 15'
est-ce que la progressbar d'adapte si par exemple la marco dure plus ou moins longtemps...
:-))))))
bonnes fêtes
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
19
>
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
11 déc. 2002 à 10:19
11 déc. 2002 à 10:19
Non, ta progressbar ne s'adaptera pas toute seul à ta macro. C'est toi qui doit gérer sa progression. L'idée de WhiteFang est à creuser, mais ne l'ayant jamais mise en place, je ne peut pas te guider sur ce point.
A+
A+
Amélie
>
beldyn
Messages postés
188
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
1 février 2005
11 déc. 2002 à 13:14
11 déc. 2002 à 13:14
voila...
je crois que le problème est réglé...
tout fonctionne à merveille...
ma progressbar dure tout le temps de la macro
avec le code ci dessous....
Dim Compteur As Integer
Dim i As Integer
Dim Increment As Single
'ProgressBar
Compteur = 0
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Compteur = Compteur + 1
Loop
For i = 0 To Compteur - 1
Increment = 100 / (Compteur + 1)
Increment = (i + 1) * Increment
Me.ProgressBar1.Value = Increment
Next i
Me.ProgressBar1 = 100
bye et bonne fêtes...
Amélie
je crois que le problème est réglé...
tout fonctionne à merveille...
ma progressbar dure tout le temps de la macro
avec le code ci dessous....
Dim Compteur As Integer
Dim i As Integer
Dim Increment As Single
'ProgressBar
Compteur = 0
Do While ActiveCell.Value <> ""
ActiveCell.Offset(1, 0).Activate
Compteur = Compteur + 1
Loop
For i = 0 To Compteur - 1
Increment = 100 / (Compteur + 1)
Increment = (i + 1) * Increment
Me.ProgressBar1.Value = Increment
Next i
Me.ProgressBar1 = 100
bye et bonne fêtes...
Amélie
10 déc. 2002 à 19:50
Je comprends bien le code que tu as mis, sauf le timer...
Est-ce que c'est un contrôle supplémentaire à installer sur la boìte à outils...
(parce que quand j'écris Me. je ne trouve pas le timer1 auquel tu fais référence dans la première partie de ton code...)
Si tu peux encore m'éclairer sur ce point tu serai vraiment un amour...
:-)))