Bonjour à tous,
J'ai réalisé une macro sur excel 2007 qui effectue tout un tas d'opérations et je souhaiterais y ajouter une barre de progression mais je rencontre quelques problèmes que je n'arrive pas à résoudre malgrés tous les posts sur les porgressbar que je viens de lire.
Le temps d'execution de la macro n'est pas fixe et pour que la progression de la barre soit cohérente sur tous les pc sur lesquels elles sera utilisée, je ne veux pas faire une barre en fonction du temps comme beaucoup de tuto explique. En plus de ça, la macro comprend une vingtaine de boucles dont les parametres sont variables. J'avais donc dans l'idée de changer en plusieurs endroits du code principal la valeur de ma variable de la progressbar.
ex: ligne 1: progress = 0
ligne 50: progress = 30
etc jusqu'à la valeur max.
Le problème que je rencontre c'est que étant donné que j'ai commencé le vba il y a 3 semaines avec cette macro, le code est pas super optimisé (pas génant, la macro n'est exécutée qu'une fois par semaine) mais surtout toutes mes variables (un grand nombre) ne sont pas déclarée aussi proprement qu'il le faudrait et donc qand j'ouvre une autre Sub, elles sont toutes perdues ... (plus génant).
Donc soit je dois faire en sorte que les variables soient perssistantes d'une sub à une autre, soit je dois ajouter le code de la progressbar dans mon code principal sans faire appel à d'autres sub ou fonctions. Or je ne vois pas bien comment faire.
Voici un exemple de ce que j'ai essayé. J'ai inséré ce code dans ma macro principale. Les essais précédents été plus ressemblant à ce que j'ai trouvé sur les forums, c'est à dire un module supplémentaire avec mon code de progressbar , voir aussi le code de la progressbar directement dans la userform, mais je perdais toujours mes nombreuses variables pendant l'execution du code de la barre.
Le problème pour le moment c'est qu'il me demande un "End Sub" , or je ne souhaite pas fermer ma sub principale pour ne pas perdre mes variables. D'ailleurs je ne sais même pas si cette façon de faire marche/marchera.
Voila, si quelqu'un a une idée à me soumettre et surtout si quelqu'un a compris mon problème ^^ Parce que je sais pas si j'ai été très clair...
Merci d'avance 😉
Bonne journée.
J'ai réalisé une macro sur excel 2007 qui effectue tout un tas d'opérations et je souhaiterais y ajouter une barre de progression mais je rencontre quelques problèmes que je n'arrive pas à résoudre malgrés tous les posts sur les porgressbar que je viens de lire.
Le temps d'execution de la macro n'est pas fixe et pour que la progression de la barre soit cohérente sur tous les pc sur lesquels elles sera utilisée, je ne veux pas faire une barre en fonction du temps comme beaucoup de tuto explique. En plus de ça, la macro comprend une vingtaine de boucles dont les parametres sont variables. J'avais donc dans l'idée de changer en plusieurs endroits du code principal la valeur de ma variable de la progressbar.
ex: ligne 1: progress = 0
ligne 50: progress = 30
etc jusqu'à la valeur max.
Le problème que je rencontre c'est que étant donné que j'ai commencé le vba il y a 3 semaines avec cette macro, le code est pas super optimisé (pas génant, la macro n'est exécutée qu'une fois par semaine) mais surtout toutes mes variables (un grand nombre) ne sont pas déclarée aussi proprement qu'il le faudrait et donc qand j'ouvre une autre Sub, elles sont toutes perdues ... (plus génant).
Donc soit je dois faire en sorte que les variables soient perssistantes d'une sub à une autre, soit je dois ajouter le code de la progressbar dans mon code principal sans faire appel à d'autres sub ou fonctions. Or je ne vois pas bien comment faire.
Voici un exemple de ce que j'ai essayé. J'ai inséré ce code dans ma macro principale. Les essais précédents été plus ressemblant à ce que j'ai trouvé sur les forums, c'est à dire un module supplémentaire avec mon code de progressbar , voir aussi le code de la progressbar directement dans la userform, mais je perdais toujours mes nombreuses variables pendant l'execution du code de la barre.
Code:
UserForm1.Image1.Picture = LoadPicture(Access_path & "\A350.jpg")
Cycles = 100
Progress = 0
UserForm1.Show 0
If UserForm1.ProgressBar1.Value = Cycles Then
Unload UserForm1
Exit Sub
Else
Function MAJBar(Progress)
With UserForm1.ProgressBar1
.Min = 0
.Max = Cycles
.Value = Progress
End With
End Function
End If
' ** MAJ Progress Bar **
MAJBar (1)
' ******************
' Suite du code de la macro principale
' ** MAJ Progress Bar **
MAJBar (25)
' ******************
'ETC
Le problème pour le moment c'est qu'il me demande un "End Sub" , or je ne souhaite pas fermer ma sub principale pour ne pas perdre mes variables. D'ailleurs je ne sais même pas si cette façon de faire marche/marchera.
Voila, si quelqu'un a une idée à me soumettre et surtout si quelqu'un a compris mon problème ^^ Parce que je sais pas si j'ai été très clair...
Merci d'avance 😉
Bonne journée.