VBA - Excel . afficher un compteur

Wire Less -  
tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, tous le monde.

J'ai un programme qui est asses long à s'exécuter, avec pleins de boucles qui mouline pleins de données.

Comme il est assés long, j'aurais aimé pouvoir utiliser un compteur.
J'ai cru comprendre que le mieux était d'utiliser un "userform". Ok, ça je sais faire.
Mon problème vient du ---- Application.ScreenUpdating = False ----- que j'utilise ( pour éviter de faire une crise d'épilepsie avec toutes les fenêtres qui clignotes!! )

Du coup je ne peux pas voir mon userform ce mettre à jour!

Est ce que quelqu'un à déjà rencontré ce genre de problème? Et surtout, est ce que quelqu'un à une solution ??

Merci
Configuration: Windows 2000
Firefox 3.0.13

2 réponses

  1. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    Bonjour,
    Application.screenupdating ne s'applique pas aux userforms.
    Pour ajouter le contrôle barre de progression, clic droit sur ds l'onglet Contrôles de la boite à outils puis contrôles supplémentaires et cocher le contrôle Microsoft ProgressBar Control x.x
    Ensuite l'idée est d'incrémenter la valeur du progressbar de 1 à 100 par une boucle en fonction du pourcentage d'avancement de a macro( 'est là que ça peut être un peu délicat suivant ton code)
    0
    1. Wire Less
       
      Ailles ... Pourtant mon code est super simple !!


      Sub Toto
      For i = 1 to 1000
      Moulinette_1
      Moulinette_2
      ...
      Next
      End Sub


      Je dois mettre un truc du genre
      Private Sub ProgressBar1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
      End Sub

      Quelques part? C'est ça?
      0
  2. tompols Messages postés 1273 Date d'inscription   Statut Contributeur Dernière intervention   460
     
    non non, simplement en incrémentant sa valeur de 1 à 100 (où alors modifier sa propriété valeur max à 1000) ds ta procédure :
    Sub Toto
    For i = 1 to 1000
    Moulinette_1
    Moulinette_2
    UserForm1.ProgressBar1 = i / 10 'en supposant que la valeur max de ProgressBar1 est définie à 100 (par défaut)
    Next
    End Sub 


    0