Afficher une barre de progression pendant le traitement d'une macro excel
cs_gwenadu
Messages postés2Date d'inscriptionmercredi 12 novembre 2003StatutMembreDernière intervention27 janvier 2004
-
27 janv. 2004 à 09:51
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 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:
Vba barre de progression
Barre de progression vba - Meilleures réponses
Barre de progression excel vba - Meilleures réponses
cs_PROGRAMMIX
Messages postés1133Date d'inscriptionmercredi 2 octobre 2002StatutMembreDernière intervention24 juillet 20112 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