Progress Bar

energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 - 12 août 2004 à 16:02
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 - 13 août 2004 à 12:18
Bonjour,

voila j'ai réussi a insérer une progress bar dans un UserForm mais je n'arrive a l'incrémenter. Je voudrais que mon UserForm s'affiche quand je clic sur un bouton qui est contenu dans une feuille excel et que ma progressbar s'incrémente.

Si Quelqu'un a une idée je suis preneur. ;)

Thomas

13 réponses

cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
12 août 2004 à 16:14
je dit peut etre une connerie, j'y connais rien en vba, mais en vb, ta progressbar possède une propriété value

maBarre.value=maBarre.value +1 (attention toutefois a ne pas depasser maBarre.max
0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
12 août 2004 à 16:24
je suis entièrement d'accord avec toi, le problème qui se pose c'est que mon UserForm s'affiche bien mais que ma progressBar n'augmente pas d'un iota.
j'ai pourtant bien fai tune boucle avec : mabarre.value = mabarre.value + 1
mais je crois savoir q'u'en vb vous utilisez un controle timer pour les progressBar hors ce controle n'hexite pas en vb ou du moins je ne l'ai pas trouvé
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
12 août 2004 à 16:53
En VB tu as la fonction DoEvents qui permet de provoquer le rafraichissement des contrôles et la gestion des évènements pendant des traitements.

Pareil en VBA.
0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
12 août 2004 à 17:21
ok et je dois m'en servir comment du doEvents?

voila mon code qui est contenu dan smon user form1 :

Pulic sub Test()
ProgressBar1.min = 0
ProgressBar1.max = 100

UserForm1.show
for a =0 to 100
progressBar1.value = a
a=a+1
next a
End Sub

donc la j'ai mon Userform qui s'affiche avec une progressBar vide et qui ne s'incrément pas a l'écran

par contre si tu place le UserForm1.show après Next a
alors la tu as la userform1 qui s'affiche avec la progress bar pleine.

comment dois-je faire pour que la progress barre s'incrémente et que je la vois s'indrémenter a l'ecran?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
12 août 2004 à 17:48
Dans ta boucle For.
Par contre je l'aurais écrite ainsi

Pulic sub Test()
Dim lCpt as Long

ProgressBar1.min = 0
ProgressBar1.max = 100

UserForm1.show
For lCpt = ProgressBar1.Min to ProgressBar1.Max
ProgressBar1.Value = lCpt
DoEvents
Next lCpt
End Sub


De plus il te faut savoir que le DoEvents consomme pas mal en temps machine, pour cette raison je limite toujours mes DoEvents à une vingtaine dans une ProgressBar.
0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
12 août 2004 à 18:02
euh j'ai fait tout comme tu m'as dit mais a l'affichage ma progressbar ne change elle ne s'incrémente pas, ou plus exactement elle ne s'incrémente pas a l'ecran.

Néanmois je te remercie pour l'aide que tu m'as déjà procurée ;)
0
cs_ramg Messages postés 14 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 6 février 2006
12 août 2004 à 18:42
Salut
Fait un essai avec UserForm1.ProgressBar1 à la place de tes ProgressBar1
0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
13 août 2004 à 08:20
J'ai essayé, j'ai vu mais j'ai pas vaincu.
Userform1.Progressbar1 ne fonctionne pas non plus ma ProgressBar ne s'incrémente pas à l'ecran.
0
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
13 août 2004 à 09:32
Si tu ne peut pas voir la progression c'est tout simplement parce qu'elle est trop rapide! Je sais pas si on peut atiliser les apis en vba, si c'est le cas voila :

Private Declare Function GetTickCount Lib "kernel32" () As Long

Sub Test()
Dim lCpt As Long
Dim lTime As Long

progressbar1.Min = 0
progressbar1.Max = 100

UserForm1.show

For lCpt = progressbar1.Min To progressbar1.Max
progressbar1.Value = lCpt

lTime = GetTickCount

Do
DoEvents
Loop Until GetTickCount - lTime >= 20 '50ms

Next lCpt
End Sub


J'ai fait un test sous vb6 et ca marche.

bye.
0
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
13 août 2004 à 09:34
lTime = GetTickCount

Do
DoEvents
Loop Until GetTickCount - lTime >= 20 '20ms

'ca fait une pause de 20ms et pas 50 comme j'ai mis en haut

0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
13 août 2004 à 10:05
Bon et bien j'ai essayer de mettre en pratique t'as fonction mais ça passe pas sous vba, enfin je n'y arrive pas.

Mais je ne crois pas que se soit parceque ma progress bar est trop raipe que je ne la vois pas, je pencherais plus pour un truc du genre mon Userform ou ma ProgressBar ne se rafraichissent pas.
0
cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
13 août 2004 à 11:45
Sous vb6, avec le code que tu as mis, la pbar s'affichent directement au max, alors qu'en faisant une pause avec doevents (rafraichit les controls et permet a l'utilisateur de faire d'autre choses) ca fonctionne très bien.

Ca veut donc dire que si tu limite la vitesse de la boucle, alors tu verra ta pbar s'incrementer.
0
energizer956956 Messages postés 29 Date d'inscription jeudi 29 avril 2004 Statut Membre Dernière intervention 15 mars 2005 1
13 août 2004 à 12:18
Non non, avec le code que j'ai mis la barre s affiche a l'écran mais elle est vide et elle ne se rempli pas du tout, c'est seulement si je mets le UserForm1.show après la boucle et que je supprime le UserForm1.show qui se trouve avant la boucle que je vois ma ProgressBar pleine.

Et j'ai beau avoirs un doEvents ça ne me permets pas de voir ma barre progresser.

mais ce que je ne comprends pas c'est que ça fonctionne chez toi et pas chez moi :(
0
Rejoignez-nous