UserForm et Barre de progression [Résolu]

UserForm et Barre de progression [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 14-04-2010 à 13:10:50    

Bonjour à tous,
 
J'ai créé un Userform dans lequel j'ai ajouter une barre de progression microsoft (version 6.0)
J'ai donc un UserForm1 contenant:
- un Fram1 contenant lui-même:
        - un Label1 (pour afficher le traitement en cours)
        - une ProgressBar1
 
Dans le code de mon Userform1 j'ai ceci:
[ccp]Private Sub UserForm_Initialize()
 
    With Me.ProgressBar1
        .Min = 0
        .Max = 41
        .Value = 0
    End With
     
End Sub[/cpp]
Au debut de ma macro j'affiche ma UserForm avec

Code :
  1. UserForm1.Show


A chaque étape de ma macro j'ajoute avant:

Code :
  1. UserForm1.Label1 = "Mon Etape"


et à la fin de l'étape

Code :
  1. UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1


 
Mais ma fenêtre de bougeait pas et restait au début (avec "Label1" au lieu de "Mon Etape" ).
J'ai donc utilisé:

Code :
  1. UserForm1.Repaint


 
pas d'effet,
 
j'ai mis ce dernier code entre :

Code :
  1. Application.ScreenUpdating = True
  2. UserForm.Repaint
  3. Application.ScreenUpdating = False


 
Sans effet
 
Tout ce que je peux faire c'est prendre ma UserForm avec ma souris et la bouger pour m'amuser a la dupliquer partout :D
A part ça lorsque je clic sur le coin superieur droit pour fermer mon UserForm, ma macro s'execute (je ne sais pas si je ferme la UserForm pendant le traitement ou alors si Excel attend que je ferme la UserForm pour executer la macro.
 
C'est quoi l'astuce ????
 
un petit bout de mon code pour ceux qui demanderaient :

Code :
  1. UserForm1.Show
  2. ' Remplacement des points par des virgules
  3. UserForm1.Label1 = "Remplacement des points par des virgules - Etape longue"
  4. UserForm1.Repaint
  5. Range("A:K,M:N,P:AH,AJ:AZ" ).Select
  6. Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, SearchOrder _
  7.         :=xlByColumns, MatchCase:=False
  8. UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1
  9. UserForm1.Repaint


Message édité par GohanSSj2 le 03-05-2010 à 13:53:21
Reply

Marsh Posté le 14-04-2010 à 13:10:50   

Reply

Marsh Posté le 14-04-2010 à 13:29:52    

Bon je vais me répondre à moi-même:
 
Il faut rajouter vbModeless aprés UserForm1.Show
et ajouter UserForm1.Repaint aprés chaque mise à jour pour actualiser la barre.
J'en ai mis aprés les UserForm1.ProgressBar1.value +1
et les UserForm1.Label1 = "Mon  Etape"  
 
Voilou en espérant que ça aide d'autres gens

Reply

Marsh Posté le 14-04-2010 à 13:31:47    

Plus explicitement
 

Code :
  1. UserForm1.Show VbModeless
  2. UserForm1.Label1 = "Mon  Etape"
  3. UserForm1.Repaint
  4. MACRO
  5. UserForm1.ProgressBar1.Value = UserForm1.ProgressBar1.Value + 1
  6. UserForm1.Repaint


 
voilou

Reply

Marsh Posté le 15-04-2010 à 09:18:36    

Salut,
 
  Un petit DoEvents dans la boucle permet au système de rendre la main, afin de réactualiser les affichages, par exemple.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed