Bonjour,
voici mon pb:
j'ai un fichier ppt avec des macros qui font des calculs qui peuvent prendre plusieurs minutes, et je ne veux pas que l'utilisateur pense que le programme a planté alors qu'en fait il travail... donc je voulais mettre une ProgressBar pour le faire patienter.
j'ai donc trouver comment faire ca: j'ai fait une userform avec une progressBar. Ensuite, au debut de la macro que je lance pour faire mon calcul, j'ai mis ce bout de code que j'ai trouvé en cherchant a droite a gauche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Dim frm As New Progress_Bar frm.Show vbModeless Dim MaxCount As Variant MaxCount = frm.ProgressBar1.Max ' A variable that measures our progress Dim counter As Long counter = 0 Do While counter < MaxCount Dim delay As Long Dim trivial As Long trivial = 0 For delay = 1 To 500000 trivial = CLng(1.17 + CDbl(trivial)) Next delay counter = 1 + counter frm.ProgressBar1.Value = frm.ProgressBar1.Value + 1 frm.ProgressBar1.Refresh DoEvents ' Essential to let VBA respond to a user action Loop
Ca marche bien, ca ouvre bien ma userform qui s'apelle "Progress_Bar" et ca fait bien evoluer ma progressBar qui se trouver dedans.
Le pb c'est que le calcul ne se fait pas tant que la progressBar n'est pas au bout... et ca c'est surement dut au fait que ce bout de code ci-dessus se trouve dans le meme macro que celle qui lance le calcul.
ce que je voudrais faire c'est donc pouvoir lancer la ProgressBar et la faire evoluer et qu'en arrière plan le calcul puisse se faire...
Merci d'avance
Yves
Partager