IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Progressbar pendant execution d'une macro


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 39
    Points : 27
    Points
    27
    Par défaut Progressbar pendant execution d'une macro
    Bonjour,

    J'ai une macro qui prend environ une minute à s'exécuter, j'aimerais donc informer l'utilisateur sur l'avancement des calculs.

    Cette macro comporte une grosse boucle générale de 1 à 9, qui met donc environ 6s à chaque tour.
    J'ai donc créé un userform avec une progressbar mais je n'en ai jamais manipulé.

    Quand je lance ma macro , elle se bloque au premier tour et je suis obligé de fermer l'userform pour que les calculs s'effectuent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim derniere_ligne, derniere_ligne_correspondance, i, j, k, ligne, a, b As Long
     
    UserForm1.Show
     
    For a = 1 To 9
     
     
    UserForm1.ProgressBar1.Value = a
    UserForm1.ProgressBar1.Refresh
     
    + Ma macro dépendant de a

    Merci de votre aide.

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    ben si c'est déjà long sans le progress bar ça va s'aggraver avec
    mais si tu y tiens vraiment il ne devrait pas être plutôt dans la macro ( je n'en utilise jamais ) logiquement l'appel devrait etre fait à plusieurs endroit de la macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    premier tronçon routine
    maj pb
    deuxieme tronçon routine
    maj pb
    ...
    dixieme tronçon routine 
    fion pb

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut goby45 et le forum
    Quand tu lances un USF en mode "Modal", on arrête le reste et seul l'USF compte.
    Met la propriété ShowModal à False
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim derniere_ligne, derniere_ligne_correspondance, i, j, k, ligne, a, b As Long
    UserForm1.Show
    UserForm1.ProgressBar1.Max=9
    For a = 1 To 9
         le code dépendant de a
         UserForm1.ProgressBar1 = a
    Next a
    A+

  4. #4
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour goby45 Daranc Gorfael le forum meme avis que Daranc en general il faut mieux dans un premier temps optimiser ta macro pour aller plus vite il est vrai que dans certains cas un progressbar ne penalise pas trop tout depend du code ??? un exemple basique avec une macro volontairement lente pour comprendre code dans l'user.

    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
    Option Explicit
    Dim J As Integer, i As Byte
    Private Sub UserForm_Activate()
      Repaint
       [a1] = 1
       With Me.ProgressBar1
      .Min = 0
      .Max = 9
      End With
       Application.ScreenUpdating = False
       For i = 1 To 9
       For J = 1 To 10000
       [a1] = [a1] + 1
       Next J
       Me.ProgressBar1.Value = Me.ProgressBar1.Value + 1
       Next i
    End Sub

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 39
    Points : 27
    Points
    27
    Par défaut
    Merci beaucoup ça fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Naviguer dans les feuilles pendant l'execution d'une macro
    Par scons dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/04/2011, 15h33
  2. bloquer les réaffichages pendant l'execution d'une macro
    Par michelp38 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2011, 19h23
  3. Réponses: 3
    Dernier message: 05/01/2009, 03h43
  4. Boite à outils qui s'affiche pendant l'execution d'une macro
    Par Raadgever596 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/12/2008, 17h20
  5. [VBA-E]Pendant l'execution d'une macro
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2006, 18h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo