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 :

Barre de progression dans UserForm [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Points : 61
    Points
    61
    Par défaut Barre de progression dans UserForm
    Bonjour

    Je souhaite afficher une barre de progression dans une (un ?) UserForm.
    J'ai rajouté un controle qui s'appelle "progressbar" et que je met à jour en fonction de l'avancement du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sub truc()
         ' code
         ' code
         userformQuiContientLaProgressbar.progressbar.value = 40
         'etc...
    end sub
    Je fait est que quand je demande d'afficher l'UserForm qui contient cette barre d'avancement, cela bloque le code initial (dans cet exemple c'est le code de "sub truc()", c'est celui qui avait appelé l'UserForm) jusqu'à ce que je ferme l'UserForm.

    Y a-t-il un moyen de faire une barre de progression PENDANT que le code continue (pas d'obligation de prendre une ProgressBar, ni obligation de prendre une UserForm). Je souhaite juste montrer l'avancement du calcul puisque il est de quelques secondes.

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Points : 72
    Points
    72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.StatusBar = " Concaténation terminée "
    j'utilise ça, cela me permet de savoir ou j'en suis dans ma macro, mais elle dure une dizaine de seconde je ne sais pas si ça te sera utile bye

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Ca fonctionne bien le problème c'est que ca n'est pas assez visible (c'est d'ailleurs pour ca que j'ai pensé mettre une UserForm en gros au milieu avec l'avancement du calcul)

    Il n'y a pas une solution plus visible genre "gros pâté au milieu de l'écran" pour être sur que la personne sache qu'il ne sert a rien de cliquer partout pendant que ca charge ?

  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
    bonsoir Tempas isfet le forum. un sujet qui revient souvent . Oui un userform avec un progressbar ou label c'est ce qu'il faut ...le pb... c'est de savoir sur quel style de code tu veus l'utiliser sur des boucles pas de souci sur autre code pas evident a mettre en place deplus. l'action de mettre l'ecran a jour tous les X % le temps pour effectuer ta macro va être plus long "normal" pour cela il faudrait voir ton code pour dans un premier temps voir si on peut l'optimiser trés important en régle géneral le code se trouvera dans l'userform avec des instructions type "repaint" pour mise a jour. eventuellement je peus regarder demain soir si pas de reponse d'ici la

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    En fait je souhaite ouvrir l'userform avec une barre de chargement en début de macro puis la fermer en fin de macro.

    La mise a jour (uniquement la mise à jour) de la barre de progression se fait des fois dans des boucles, d'autres fois dans des if, un peu partout puisque je montre l'avancement (mais au besoin je peux ne pas en mettre dans les boucles, cela n'a pas une importance primordiale !
    (Pour éviter toute confusion; c'est moi qui met à jour la barre directement dans le code: ProgressBar = 40, il n'y a rien qui calcule combien de temps il reste pour finir)

    La méthode Repaint est utile si le contenu ou l'aspect d'un objet change de façon significative, et si vous ne voulez pas attendre que le système redessine automatiquement la zone.
    Je ne veux pas redessiner la zone, je veux juste que la UserForm reste au premier plan pendant que le reste de ma macro continue de caluler les changements (Je n'ai jamais utilisé repaint je ne sais donc pas si cela convient pour résoudre mon problème)

    Voila le début du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub organisation()
        MsgBox "Cette opération peut quelques minutes" & Chr(10) & "Merci de patienter"
     
        Application.ScreenUpdating = False
        oldStatusBar = Application.DisplayStatusBar
        Application.DisplayStatusBar = True
        Application.StatusBar = " Organisation en cours, merci de patienter..."
     
        usrfrm_chargement.Show
        Sheets(3).Activate
    '   ...
    End Sub
    Et avec ca, le code bloque à "usrfrm_chargement.show" jusqu'à ce que je clique sur la croix pour fermer la UserForm. Une fois la UserForm fermée, le code continue "Sheets(3).Activate" etc...

  6. #6
    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
    re,tous un exemple basique avec 2 macros volontairement lente a adapter

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 51
    Points : 61
    Points
    61
    Par défaut
    C'est tout a fait ca, merci beaucoup !

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

Discussions similaires

  1. masquer une barre de défilement dans UserForm
    Par issoram dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/10/2023, 05h11
  2. Barre de progression dans une boucle : impossible de modifier son avancement
    Par piero-la-lune dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/01/2012, 11h24
  3. Barre de progression dans un GtkTreeStore
    Par Creuvard dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 30/11/2009, 16h54
  4. Barre de progression dans un GtkListStore
    Par flo_k dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 06/03/2009, 14h38
  5. barre outil personnalisée dans userform
    Par jpenja dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/11/2007, 11h24

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