ProgressBar

Résolu
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010 - 7 déc. 2004 à 09:57
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007 - 7 déc. 2004 à 11:17
Salut tout le monde :)
J'ai besoin d'aide pour manier la progressbar j'ai chercher sur le site ya pas grand chose qui correspond à ce que je recherche.
J'ai une progressbar "pbChargement" et en fait j'ai une table "DétailProfil" qui contient des enregistrements. Et lors d'un import j'ai cette progressbar qui apparait et je voudrais qu'elle se remplisse au fur et a mesure qu'on lit les enregistrements.
Tout simplement parce que le temps d'import de 5 enregistrements n'est pas le même que pour 800 enregistrements.

Voilà merci
_______________________
<<<< :-: 4L!@$ :-: >>>>

11 réponses

gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
7 déc. 2004 à 11:17
OK, merci pour l'info.

Concernant ta progressbar que tu voies pas défiler : c'est normal.
Ta boucle ne fait que d'incrémenter la progressbar ==> il n'y a qu'une opération ==> si t'as 400 enregistrements et un CPU performat, il lui faut pas une seconde pour faire le traitement entier.

Si c'est juste voir la progress bar qui t'intéresse, t'as qu'à mettre une tempo dans la boucle, et la tu la verras.

Mais j'en reviens au début de ton post : si j'ai bien compris, tu fais un export d'enregistrements (environ 400 en ce moment) et tu veux matérialiser le traitement par une barre de progression.

Le tout est de savoir comment tu fais ton export.
Car en fait, il faut que tu initialises ta progressvalue à 0
ta progressmax à recordcount
et à l'import de chaque enregistrement, tu fais progress+1.
Si ton import se fait par une requetesql, c'est mort car tu n'as pas la main sur le traitement de chaque dossier, mais seulement à la fin.
Par contre si c'est un truc du genre :
rst.movefirst
do while not rst.eof
rst2=rst (là je chématise ...)
progress.value=progress.value+1
rst.movenext
loop


Là ça marche

Guich
3
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
7 déc. 2004 à 09:59
Salut alias666,

je ne sais pas trop comment tu fais ton import d'enregistrements mais si tu le fais à la mano, pourquoi ne pas placer ta valeur Max de la progressbar à recordcount, et tu fais +1 à chaque import

Guich
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
7 déc. 2004 à 10:05
J'ai mis ca mais bon sachant que chui pas une lumière en algo ca plante.

Private Sub Form_Load()
        Dim t As Long
        Centrage Me
        pbChargement.Value = 0
        For t = 1 To Db.TableDefs("Detailprofil").RecordCount
        pbChargement.Value = pbChargement.Value + 1
        Next t
        Unload Me
End Sub

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
AnteManoclis Messages postés 154 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 6 septembre 2007
7 déc. 2004 à 10:17
Salut alias666,

As-tu pensé à mettre la commande suivante avant le For:
pbChargement.Max=Db.TableDefs("DetailProfil").RecordCount

En espèrant que ça aura pu t'aider
Tchô ;)
AnteManoclis
0

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

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
7 déc. 2004 à 10:21
Et ne pas oublier de mettre un DoEvents dans la boucle for, juste après l'incrément de la Value de la progressbar, sinon, tu risques fort de ne jamais voir ta progressbar progresser !!

Christophe R.
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
7 déc. 2004 à 10:22
Actuellement j'ai ca
Private Sub Form_Load()
        Dim t As Long
        Centrage Me
        pbChargement.Min = 0
        pbChargement.Max = Db.TableDefs("Detailprofil").RecordCount
        For t = pbChargement.Min To pbChargement.Max
        pbChargement.Value = pbChargement.Value + 1
        Next t
End Sub


Mais le problème c'est aussi que il y a plus de 100 enregistrement et que la progressbar va pas jusqu'a 400 non plus =S
_______________________
<<<< :-: 4L!@$ :-: >>>>
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
7 déc. 2004 à 10:25
Merci "Master Of The Treeview" pour le DoEvents j'y avais pas penser ;) il me reste plus qu'à transformer la nombre d'enregistrement =S
_______________________
<<<< :-: 4L!@$ :-: >>>>
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
7 déc. 2004 à 10:48
alias666,
2 choses : le max de ta progressbar c'est toi qui le fixe avec pbChargement.Max Db.TableDefs("Detailprofil").Recordcount> il n'y a aucune raison qu'il te limite à 100.

Dan ta boucle for, là tout ce que tu fais c'est dérouler les valeurs de ta progressbar ==> ça va aller tellement vite que tu vas pas la voir défiler.
C'est dans ce code qu'il faut que tu fasses l'import de tes recordsets.

Guich
0
gandalflegris007 Messages postés 211 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 11 juin 2007
7 déc. 2004 à 10:49
Encore un truc, mais là c'est une question con ...

Comment vous faites pour la mise en forme du code (la police et le fond).
Car à chaque fios que je mets du code, c'est brut de fonderie et ça devient vite illisible.

Merci,
Guich
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
7 déc. 2004 à 10:53
Bon ya pu de bug mais tu as raison je vois pas ma progressbar se remplir malgré le DoEvents pourquoi qu'est-ce qu'il faut que je rajoute
Private Sub Form_Load()
        Dim t As Long
        Centrage Me
        pbChargement.Min = 0
        pbChargement.Max = Db.TableDefs("Detailprofil").RecordCount
        For t = pbChargement.Min To pbChargement.Max
        pbChargement.Value = pbChargement.Value + 1
        DoEvents
        If pbChargement.Value = pbChargement.Max Then
                Exit Sub
        End If
        Next t
End Sub

_______________________
<<<< :-: 4L!@$ :-: >>>>
0
alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
7 déc. 2004 à 10:58
Pour ta question tu met une balise
[ c o d e ]

"ton code"

[ / c o d e ]

Bien sur tu enleves les espaces ;)
_______________________
<<<< :-: 4L!@$ :-: >>>>
0
Rejoignez-nous