Barre de progression ne bouge pas

Bonjour,

je tente de faire une barre de progression avec 2 formes (rectangle 1 et rectangle 2)
Lorsque j'utilise ce type de code sur mon pc professionnel je vois bien la barre de progression évoluer de manière fluide. Sur mon pc privé malheureusement la barre de progression n'évolue pas durant les 20 secondes d'éxecution de la macro et elle se met à jour uniquement une fois que la macro est terminée (par contre j'entends le pc qui travail). Pouvez-vous me dire si je peux effectuer quelques changement de paramétrage du pc pour optimiser ses performances ? ou peut-être le problème vient-il de la macro ? voici le code :

Sub test()
Set Rect = ActiveSheet.Shapes("Rectangle 1")
Set ProgBar = ActiveSheet.Shapes("Rectangle 2")
With ProgBar
    .Width = Rect.Width
    .Left = Rect.Left
    .Top = Rect.Top
    .Height = Rect.Height
End With
t = Timer
a = 0
Do Until (Timer - t) > 20
    ProgBar.Width = Rect.Width - (Timer - t)
    DoEvents
Loop
End Sub

petite précision, si j'exécute le code en mode débogage ligne par ligne la barre de progression évolue bel et bien à chaque passage sur la ligne "ProgBar.Width = Rect.Width - (Timer-t).
enfin, mon pc privé possède 32Go de RAM, un processeurn i7 9th gen et une carte graphique nvidia geforce gtx 16 series.

Merci pour votre aide ! :)

Sub test()
Set Rect = ActiveSheet.Shapes("Rectangle 1")
Set ProgBar = ActiveSheet.Shapes("Rectangle 2")
With ProgBar
    .Width = Rect.Width
    .Left = Rect.Left
    .Top = Rect.Top
    .Height = Rect.Height
End With
t = Timer
a = 0
Do Until (Timer - t) > 20
    ProgBar.Width = Rect.Width - (Timer - t)
    DoEvents
    Calculate
Loop
End Sub

Rebonjour,

pour info j'ai rajouté "calculate" et celà semble mieux fonctionner. Je laisse le poste ouvert pour avoir d'autres propositions mais voici le code adapté :

bonjour Lorenzoforte,

je déteste l'idée d'une barre de progression, il faut chercher à augmenter la vitesse de la macro, au lieu de la ralentir avec cette barre.

Vous pouvez doubler le nombre de "DoEvents" et minimaliser le nombre de "updates", par exemple seulement 20 (=chaque 5%, = évoluer moins "fluide")

Sub test()
     Dim dWidth, dWidth1
     Set Rect = ActiveSheet.Shapes(1)
     Set progbar = ActiveSheet.Shapes(2)
     With progbar
          .Width = Rect.Width
          .Left = Rect.Left
          .Top = Rect.Top
          .Height = Rect.Height
     End With
     t1 = Timer
     t2 = Timer + 20
     Do
          dWidth = WorksheetFunction.Ceiling_Math((Timer - t1) / 20, 0.05)
          If dWidth <> dWidth1 Then
               progbar.Width = Rect.Width * dWidth
               DoEvents
               DoEvents
               dWidth1 = dWidth
          End If
     Loop While t <= Timer And Timer < t2
End Sub
Rechercher des sujets similaires à "barre progression bouge pas"