Userfom et progressbar

Résolu
cs_oxygene2 Messages postés 15 Date d'inscription jeudi 30 septembre 2010 Statut Membre Dernière intervention 26 août 2011 - 30 sept. 2010 à 00:44
nathansecret Messages postés 63 Date d'inscription mardi 11 novembre 2008 Statut Membre Dernière intervention 31 octobre 2011 - 16 oct. 2010 à 15:23
Bonjour à tous !!

Faisant un programme pour exécuter entre autre une mise à jour j'ai besoin de lancer une progressbar le temps du téléchargement.

J'aimerais lancer ma progress bar sur une 2eme userform après un click sur un bouton de ma 1ere userfom.
Ma 2eme userform s'affiche bien mais elle reste "inactive" (la progress bar ne défile pas)

Voici mon code (ce n'est qu'un test pour le moment)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Form2_activate()
ProgressBar.Value = 0
ProgressBar.Visible = True

For j = 1 To 500
ProgressBar.Value = ProgressBar.Value + 0.2
Sleep 1
Next j
ProgressBar.Visible = False
m$ = MsgBox("Mise à jour terminée", vbOKOnly, "Etat")
End Sub

Private Sub Maj_Click()
Form2.Show
End Sub



Au niveau de la progression de la barre que me conseillez vous entre :
Faire progresser la barre en fonction de la vitesse de téléchargement (ce qui me parait compliqué)
Faire progresser la barre en fonction du nombre de fichier restant à télécharger (Dans ce cas quelle est la fonction permettant de savoir quand un téléchargement est terminé??)

Merci de vos réponses

4 réponses

lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012
30 sept. 2010 à 02:22
bonjour

voila une solution simple est qui va résoudre tout tes problèmes (téléchargement + progressbar ...) clic ici


Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
30 sept. 2010 à 09:07
Salut

Sleep fige le programme VB et laisse Windows gérer les autres applications, certes, mais ta propre application ne profite pas de cette fausse pause.
Il faut mettre au moins un DoEvents après ou avant ton Sleep pour que ton application ait le temps de se rafraichir.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_oxygene2 Messages postés 15 Date d'inscription jeudi 30 septembre 2010 Statut Membre Dernière intervention 26 août 2011
30 sept. 2010 à 23:16
Le sleep c'était pour l'exemple si je l'enlève j'ai le même problème à savoir que ma Form2 ne s'active pas...

Je suis sur que c'est un truc tout bête en plus :)

J'aimerais juste lancer une 2eme user form à partir d'une 1ere et pouvoir déclencher des évènements avec (en l'occurrence la progress bar ici)



Je vais regarder ton zip le diablo :)

Merci pour vos réponses
0
nathansecret Messages postés 63 Date d'inscription mardi 11 novembre 2008 Statut Membre Dernière intervention 31 octobre 2011
16 oct. 2010 à 15:23
Sois sûr que la feuille soit bien visible, par ailleurs, je ne sais pas si la valeur d'une ProgressBar peut être décimale.

Aussi, surtout ne jamais faire :
m$ = MsgBox("...", OkOnly ,"...")
1) Le résultat d'un MsgBox est "As MsgBoxResult" (et non pas "As String")
2) OkOnly, c'est forcément Ok, pourquoi enregistrer la réponse de l'utilisateur ?

Sinon, tu peux toujours faire :
Dim Resultat As MsgBoxResult
Resultat  = MsgBox("...",vbYesNoCancel,"Attention !")
Select Case Resultat
    Case vbYes
         'Oui
    Case vbNo
        'Non
    Case vbCancel
        'Annuler
End Select


... ou alors :
MsgBox "...",vbOkOnly,"..."


Enfin bref, voilà ton code :

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Form2_activate()
    ProgressBar.Value = 0
    ProgressBar.Visible = True
    Form2.Visible = True
    For j = 1 To 100
        ProgressBar.Value = ProgressBar.Value + 1
        DoEvents
        Sleep 5
    Next j
    ProgressBar.Visible = False
    MsgBox "Mise à jour terminée", vbOKOnly, "Etat"
End Sub


NathanSecret
0
Rejoignez-nous