[Access] barre de progression

barre de progression [Access] - SQL/NoSQL - Programmation

Marsh Posté le 05-04-2003 à 19:18:58    

Bonjour,
 
Dans le cadres de mon projet Access, je dois parfois executer des macros, ou
des procedures, qui prennent un certain temps à s'executer.
Au lieu de laisser l'utilisateur devant le formulaire statique, j'aimerais
bien qu'une barre de progression (si possible personnalisable, du style un
texte qui apparait au fur et à mesure de la progression) apparaisset au
milieu de l'ecran pendant la durée d'exécution de la macro/procedure.
On m'a dit que Access 2002 permettait ça assez facilement mais
malheureusement je suis sous Access 97...
 
Merci d'avance pour votre aide
 
Gregory
 

Reply

Marsh Posté le 05-04-2003 à 19:18:58   

Reply

Marsh Posté le 05-04-2003 à 22:32:08    

ca se fait aussi
j ai le code quelque part, j ai bossé sur un truc similaire l année derniere en stage
je te retrouve ca.
 
edit : voila
 
ds un formulaire, un label nommé TextWait et un objet OLE nommé ProgressBar, Application OLE ProgCtrl, classe d objet COMCTL.ProgCtrl.1
 
code du formulaire:
 

Code :
  1. Private Sub Form_Load()
  2. On Error Resume Next
  3.   ' pour le texte a mettre
  4.   Me.TextWait.Caption = Me.OpenArgs
  5. End Sub


 
ds un module nommé modProgressBar:

Code :
  1. Sub create_ProgressBar(Msg As String, Max As Integer)
  2. On Error Resume Next
  3.   If Max = 0 Then
  4.     Max = 10
  5.   End If
  6.   DoCmd.OpenForm "frm_ProgressBar",,,,, acDialog, Msg
  7.   With Forms![frm_ProgressBar]
  8.     .Visible = True
  9.     .ProgressBar.Max = Max
  10.     .ProgressBar.Value = 0
  11.     .Repaint
  12.   End With
  13. End Sub
  14. --------------------------------------------------------
  15. Sub Progress_ProgressBar(step As Integer)
  16. On Error Resume Next
  17.   If Forms![frm_ProgressBAr].ProgressBar.Value + step > Forms![frm_ProgressBar].ProgressBar.Max Then
  18.     step = Forms![frm_ProgressBar].ProgressBar.Max - Forms![frm_ProgressBar].ProgressBar.Value
  19.   End If
  20.   Forms![frm_ProgressBar].ProgressBar.Value = Forms![frm_ProgressBar].ProgressBar.Value + step
  21.   If Forms![frm_ProgressBar].ProgressBar.Value = Forms![frm_ProgressBar].ProgressBar.Max Then
  22.     DoCmd.Close acForm, "frm_ProgressBar"
  23.   End If
  24. End Sub


Tu y fais appel avec :
modProgressBar.create_ProgressBar _texte_a_entrer_, _max_de_la_barre_
et t incrementes avec :
modProgressBar.Progress_ProgressBar _step_
 
arrivé au max le formulaire se ferme tout seul, a toi d ajuster les step pour que ce soit nickel  :D  
 
 :hello:


Message édité par _deskira_ le 05-04-2003 à 23:06:08
Reply

Marsh Posté le 06-04-2003 à 11:41:50    

Hello,
Un grand merci pour ta reponse !
Le prob c'est que je bosse avec une version d'access 97 et je crois que l'activex progres bar est soit absent soit très limité. Bref j'aimerai bien m'en passer...
 
Par contre j'ai trouvé ça sur ce site web http://mypage.bluewin.ch/w.stucki/ [...] rogression mais je ne vois pas comment l'intégrer dans un formulaire pour qu'elle ne s'affiche que pendant l'exécution d'une macro ou d'un module,...)
Pourrais-tu m'aider s'il te plait ?
 
Encore merci
A+
 
Gregory
 
---------------
 
Créer sa propre barre de progression
 
Au lieu d'utiliser la barre de progression standard qui s'affiche dans la barre d'état au bas de la fenêtre Access ou de recourir à un contrôle ActiveX coûteux en place et en puissance processeur, on peut créer sa propre barre de progression. Elle pourra être placée sur n'importe quel formulaire à l'endroit désiré et même en plusieurs exemplaires. La marche à suivre est indiquée ci-après.
 
 
 
Sur un formulaire vierge créez un contrôle étiquette. On le remplit avec n'importe quel signe. Sa largeur sera fixée à 7,6 cm et sa hauteur à 0,5 cm. La couleur de fond sera rouge et son apparence sera 3D enfoncé.
 
 
Créez un contrôle zone de texte, supprimez son étiquette et donnez lui une hauteur de 0,42 cm. Réglez sa couleur de fond sur bleu marin et la couleur du texte sur jaune. Réglez sa propriété Aligner texte sur centre et son apparence sur En Relief. Superposez-le sur le contrôle étiquette à gauche et donnez-lui une largeur de 0,051 cm.
 
 
Ajoutez un bouton de commande et la procédure Sur clic suivante:
 
 
Private Sub cmdBarreProgression_Click()
 
Dim intX As Integer, intZ As Integer
For intX = 1 To 100
 
 
' vu que la boucle s'exécute rapidement on ajoute une pause
For intZ = 1 To 60
 
DoEvents
Next intZ
' Mise à jour de la barre de progression. On donne une valeur entre 1 et intX
Me!txtProgression = intX & "%"
Me!txtProgression.Width = 18 * intX
Next intX
 
' Message final facultatif
Me!txtProgression = "Opération terminée"
End Sub

Reply

Marsh Posté le 06-04-2003 à 12:02:40    

Le code que je t ai indiqué fonctionne tres bien ds Access 97, c est ce que j ai utilisé pendant mon stage.
 
ca fonctionne nickel avec win2k et xp, pour 98 je crois qu il faut rajouter un fichier ds windows/system pour qu il prenne en compte la progress bar sinon ca merde
 
pour le code que t as trouvé, tu peux tres bien passer la textbox en invisible qd tu travailles normalement avec ton formulaire, puis le passer en visible qd il calcule et le remettre invisible ensuite.
le 'DoEvents' j avais jamais vu par contre, je sais pas a koi ca sert.
 
moi perso je prefere ma solution, a toi de voir  :hello:

Reply

Marsh Posté le 20-04-2003 à 12:38:48    

Merci pour ton dernier post et désolé pour la reponse tardive (j'avais oublier que j'avais posté ici :sarcastic: )
A+
 
Greg

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed