Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Barre de progression pendant ouverture gros fichier texte

60 views
Skip to first unread message

Claude AGUILA

unread,
May 24, 2001, 11:25:11 AM5/24/01
to
Bonjour à tous!

J'ouvre de gros fichiers texte (.txt) à l'aide de Workbooks.Opentext filename
que j'utilise comme source de base de données.
La taille de ces fichiers pouvant atteindre 6 à 10 mégaoctets, leur ouverture
prend un certain temps. Avec VBA, comment puis-je faire défiler une barre de
progression pendant l'ouverture de ces fichiers(proportionnelle à la durée
d'ouverture) différente de celle obtenue par application.statusbar. Avec
statusbar la barre de progression d'excel disparait
quand on modifie le texte. J'utilise EXCEL97 SR2 sous WINDOWS95.
Merci par avance!

Laurent Mortézai

unread,
May 24, 2001, 11:41:11 AM5/24/01
to
Claude AGUILA a écrit :

> Avec VBA, comment puis-je faire défiler une barre de
> progression pendant l'ouverture de ces fichiers(proportionnelle à la durée
> d'ouverture) différente de celle obtenue par application.statusbar.

Je ne crois pas que ça soit possible, parce que l'ouverture du fichier
constitue UNE instruction VBA, donc pas possible de boucler. Ou
peut-être avec un événement onTime réglé à la seconde? Je n'ai pas
testé, je ne suis pas sûr que l'événement OnTime est en mesure
d'interrompre l'opération d'ouverture, le temps d'afficher une
progression. En fait, ça doit se faire (tout se fait!) mais il faut
recourir à des fonctions système cachées dans des DLL mystérieuses...

> Avec statusbar la barre de progression d'excel disparait quand on modifie le texte. J'utilise EXCEL97 SR2 sous WINDOWS95.

Ah! Là c'est différent! Tu ne sais peut-être pas que
Application.statusbar=False restaure le fonctionnement normal de la
barre d'état? Voici un exemple de code qui devrait te permettre
d'utiliser ta barre d'état pour afficher tes propres messages, de même
que de laisser Excel afficher la progression de l'ouverture d'un
fichier. Bref, le meilleur des deux mondes!

Application.StatusBar = "Blablabla" 'je prends le contrôle de la barre
'....
Application.StatusBar = False 'je redonne le contrôle à Excel, le temps
d'ouvrir un fichier
Workbooks.Open filename:="LARGE.XLS"
Application.StatusBar = "Blablabla" 'je reprends le contrôle de la
barre
'...
Application.StatusBar = False 'la macro se termine: je redonne le
contrôle de la barre à Excel


A+

Laurent

Pascal Engelmajer

unread,
May 24, 2001, 3:30:11 PM5/24/01
to
salut,
j'ai proposé à "Xavier Cehel" une amorce de solution pour créer une telle
barre.
le reste est patience et imagination.
cependant il faut que le système rende la main ce qui n'est pas sur.
voir ci-dessous
Pascal
Claude AGUILA <CLO...@aol.com> wrote in message
news:0caa01c0e465$b91f25f0$a5e62ecf@tkmsftngxa07...
Bonjour à tous!

salut,
voici les éléments de base pour concevoir une barre de progression (sans
recopier une de celles qui circulent sur le web ...)
et comprendre...
Pascal
Sub maProcedure()
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 120#, 102#, 300,
10).Select
Selection.Name = "fond" ' dessine le rectangle du fond
With Selection.ShapeRange.Fill
.ForeColor.SchemeColor = 10
.Visible = msoTrue
.Solid
End With
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 120, 102#, 6#,
10#).Select
Selection.Name = "prog" ' dessine le rectangle du témoin de
progression
With Selection.ShapeRange.Fill
.ForeColor.SchemeColor = 11
.Visible = msoTrue
.Solid
End With

Tot = 100
For i = 1 To Tot 'sert à évaluer la progression
'ici les instructions itératives remplacé ici par une boucle
For ii = 1 To 100
Range("A1").Select 'pour faire qque chose
Next ii
ActiveCell = i 'pour faire qque chose
'début de l'indication de progression
Application.StatusBar = "Travail en progression : " & i / Tot & "/1
effectué"
ActiveSheet.Shapes("prog").Select
Selection.ShapeRange.IncrementLeft 300 / Tot
DoEvents 'rend la main à windows pour mise à jour mouvement mettre
un
rem pour voir
'fin de l'itération
Next i
MsgBox "terminé !"
Selection.Delete
ActiveSheet.Shapes("fond").Select
Selection.Delete
End Sub

0 new messages