Afficher une barre de progression pendant le traitement d'une macro excel

cs_gwenadu Messages postés 2 Date d'inscription mercredi 12 novembre 2003 Statut Membre Dernière intervention 27 janvier 2004 - 27 janv. 2004 à 09:51
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 28 janv. 2004 à 15:13
Bonjour !
Dans un fichier excel, je dois lancer un traitement après avoir sélectionné une date de début et une date de fin.
Le traitement étant assez long, j'aimerais afficher une barre de progression évoluant au cours du traitement.
Mon problème est que la barre de progression s'affiche après avoir sélectionné mes dates (jusque là, ça va!), mais je suis obligée de fermer la fenêtre contenant la barre pour que le traitement s'exécute... et du coup, je ne vois plus la barre de progression !

Voici la structure de mon programme:
Dans "This WorkBook", "Workbook.open" lance userform1.show (la fenêtre avec les dates)

Dans "Userform1", "OkButton_Click" :
- récupère les dates,
- lance la fenêtre de progression:
progressform.show
progressform.repaint
- appelle la fonction qui fait le traitement:
call TABLEAU(datedebut, datefin)
- cache la fenêtre des dates:
userform1.hide

Dans "Progressform", j'ai essayé de faire un
worksheets(1).TABLEAU, comme dans un autre programme, mais il me met l'erreur "propriété ou méthode non gérée par cet objet".

Est-ce que quelqu'un peut m'aider ??
Merci d'avance !

GWENaDU
A voir également:

1 réponse

cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 3
28 janv. 2004 à 15:13
Personnellement, et ayant rencontré les même problème, j'utilise la Status Bar d'Excel avec la fonction suivante (qui n'est pas de moi) :

'Barre de progression
'**********************************************************************************
'* Hans W. Herber *
'* http://www.herber.de *
'**********************************************************************************

'******************* Barre de progression d'après James McAllister ********************

Function StatusLED(Msg As String, Pct As Single)
Dim PctDone As Integer
Dim NumReps As Integer
With Application
PctDone = .Round(Pct, 2) * 100
NumReps = Int(PctDone / 5)
' .StatusBar = Msg & .Rept(Chr(62), NumReps) & _
.Rept("#", 20 - NumReps) & " " & PctDone & "%"
.StatusBar = Msg & .Rept(Chr(62), NumReps) & _
.Rept(Chr(216), 20 - NumReps) & " " & PctDone & "%"
End With
End Function

Cette fonction est appelée de la manière suivante :

For i = 1 to 360
StatusLED "Création en cours : ", i / 360
Next

'Et après, je rend la StatusBar à Excel :

With Application
.ScreenUpdating = True
.StatusBar = False 'Rétablir la barre d'état normale
End With

Programmix
0
Rejoignez-nous