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