[VBA] ProgressBar
Résolu/Fermé
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
-
7 juin 2005 à 11:23
hafid - 28 août 2012 à 15:31
hafid - 28 août 2012 à 15:31
Hello tout le monde,
J'ai une question en VBA. Dans mon classeur, tout fonctionne bien, mais vu que j'ai une immense formule, copiée sur 500 lignes, et qui doit trier un millier et demi de lignes (quand même !), j'ai mis mon classeur en mode manuel.
J'aimerais, lorsqu'il recalcule le tout, et qu'il se remet en mode automatique pour ça, qu'une progressbar s'affiche afin de montrer l'avancement et surtout faire patienter l'utilisateur, car on a l'impression que tout plante, alors que le travail continue dans le fond... et donc l'utilisateur ferme le programme...
Quelqu'un à une solution ? Merci.
@+
J'ai une question en VBA. Dans mon classeur, tout fonctionne bien, mais vu que j'ai une immense formule, copiée sur 500 lignes, et qui doit trier un millier et demi de lignes (quand même !), j'ai mis mon classeur en mode manuel.
J'aimerais, lorsqu'il recalcule le tout, et qu'il se remet en mode automatique pour ça, qu'une progressbar s'affiche afin de montrer l'avancement et surtout faire patienter l'utilisateur, car on a l'impression que tout plante, alors que le travail continue dans le fond... et donc l'utilisateur ferme le programme...
Quelqu'un à une solution ? Merci.
@+
A voir également:
- [VBA] ProgressBar
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
19 réponses
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
7 juin 2005 à 12:13
7 juin 2005 à 12:13
;-)
Je serais toi, j'utiliserai plutôt le StatusBar (barre d'état, en bas), pour t'éviter pas mal de calculs
Quand tu veux écrire dedans :
application.statusbar="ton texte" (tu peux imaginer un compteur, style "Nombre de ligne " &Compteur &"/" &Total)
Pour remettre la barre d'état à son état "naturel" :
application.statusbar=false
;-)
Je serais toi, j'utiliserai plutôt le StatusBar (barre d'état, en bas), pour t'éviter pas mal de calculs
Quand tu veux écrire dedans :
application.statusbar="ton texte" (tu peux imaginer un compteur, style "Nombre de ligne " &Compteur &"/" &Total)
Pour remettre la barre d'état à son état "naturel" :
application.statusbar=false
;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
7 juin 2005 à 13:19
7 juin 2005 à 13:19
Quelle érudition ! Merci bien, on va dire que ça va suffire. ;)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
7 juin 2005 à 13:05
7 juin 2005 à 13:05
Ouais, pourquoi pas. Je vais mettre ça et continuer un peu mes recherches. J'aurais aimé un truc plus visuel, mais c'est déjà un bon début.
Si quelqu'un à une autre idée tant mieux, sinon, c'est pas grave, merci encore.
@+
Si quelqu'un à une autre idée tant mieux, sinon, c'est pas grave, merci encore.
@+
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
7 juin 2005 à 13:15
7 juin 2005 à 13:15
;-)
Le ProgressBar est bien, mais il prend un peu de ressources, alors que le StatusBar, bien moins...
Et si tu veux faire un joli ProgressBar, il te faut recalculer à chaque fois le Max et les propriétés du SmallChange ou Large pour que cela reflète bien la somme des données et de la progression...
C'est pour ça que StatusBar est plus simple à gérer, moins beau, mais plus simple...
;-)
Le ProgressBar est bien, mais il prend un peu de ressources, alors que le StatusBar, bien moins...
Et si tu veux faire un joli ProgressBar, il te faut recalculer à chaque fois le Max et les propriétés du SmallChange ou Large pour que cela reflète bien la somme des données et de la progression...
C'est pour ça que StatusBar est plus simple à gérer, moins beau, mais plus simple...
;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 10:32
8 juin 2005 à 10:32
En fait j'aurais encore qqch à te demander par rapport à ça, si je sais que tout le recalcul dure environ 2 mn, comment puis-je écrire le temps restant estimé ? Un truc du style :
application.statusbar = "Temps restant estimé : "&120-TempsEcoulé&"sec. Merci de patienter."
Mais comment calculer le temps écoulé ?
@+
application.statusbar = "Temps restant estimé : "&120-TempsEcoulé&"sec. Merci de patienter."
Mais comment calculer le temps écoulé ?
@+
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 10:49
8 juin 2005 à 10:49
;-)
Bin, si tu sais approx. le temps que cela dure, tu prends une variable qui va récupérer le Now+2 minutes
Puis dans la boucle, tu met un petit format(now,"hh:mm")...
;-)
Bin, si tu sais approx. le temps que cela dure, tu prends une variable qui va récupérer le Now+2 minutes
Puis dans la boucle, tu met un petit format(now,"hh:mm")...
;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 11:00
8 juin 2005 à 11:00
En fait mon problème c'est que je n'ai pas de boucle, donc il faut que j'arrive à trouver qqch qui fait en sorte que toutes les secondes le recalcul soit fait. J'ai essayé avec second(now), mais après reflexion, c'est logique que ça ne marche pas... Alors si tu trouves le moyen de faire un compteur de seconde a partir d'un point, et ben ce sera bon ;)
Merci
Merci
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 11:12
8 juin 2005 à 11:12
;-)
A partir d'un point ? Explique... ?
;-)
A partir d'un point ? Explique... ?
;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 11:16
8 juin 2005 à 11:16
Non, en fait c'est juste la même fonction qu'un chrono. Au départ il est à zéro, et à chaque seconde, la variable fait +1.
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 11:39
8 juin 2005 à 11:39
;-)
Alors attends, j'ai un doute....
Tu veux juste un compteur (super simple à faire), où alors, si je reste dans ton post d'origine, et que je vais un peu plus loin, en fait tu veux une procédure qui, en // et indépendante de ce qu'il se passe dans Excel, se déclanche à intervalles réguliers, le tout sous Excel et en VBA ?
Si c'est cela, alors là, désolé, la réponse est NON.... Cela existe en VB pur, mais pas en VBA... En VBA, tu peux piloter tout ce que tu veux, mais pas faire une procédure qui se déclanche en "arrière plan"...
Au pire, tu crée une UserForm, que tu passes en Non-Modale (tu as l'aide, pour fouiner..), dans laquelle tu vas mettre ton code, mais encore là, c'est pas joué... Va falloir ruser !!
;-)
Alors attends, j'ai un doute....
Tu veux juste un compteur (super simple à faire), où alors, si je reste dans ton post d'origine, et que je vais un peu plus loin, en fait tu veux une procédure qui, en // et indépendante de ce qu'il se passe dans Excel, se déclanche à intervalles réguliers, le tout sous Excel et en VBA ?
Si c'est cela, alors là, désolé, la réponse est NON.... Cela existe en VB pur, mais pas en VBA... En VBA, tu peux piloter tout ce que tu veux, mais pas faire une procédure qui se déclanche en "arrière plan"...
Au pire, tu crée une UserForm, que tu passes en Non-Modale (tu as l'aide, pour fouiner..), dans laquelle tu vas mettre ton code, mais encore là, c'est pas joué... Va falloir ruser !!
;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 11:44
8 juin 2005 à 11:44
Bon. Alors. ^^ Ce que je veux faire, maintenant, c'est uniquement faire un compteur de temps restant dans la barre de status. J'ai abandonnée l'idée de faire une progressbar etc. J'aimerais simplement faire en sorte que l'utilisateur puisse se rendre plus ou moins compte du temps qu'il reste avant la fin du recalcul du fichier (au total ~2mn.). C'est clair ou pas encore ? ^^
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 12:20
8 juin 2005 à 12:20
;-)
Alors, dans ce cas, il faut que tu crée une boîte de dialogue (UserForm)...
Dans les propriétés de ta UserForm, tu lui dis "False" à "ShowModal"...
Tu met un petit bouton "Fermer" et une petite étiquette (qui servivra au compteur)
Ensuite, tu récupères l'heure/minute en cours (minute+2) dans l'événement "Initialize" de ton objet "UserForm"...
Et toujours dans l'événement, tu fait ton compteur...
En //, dans une sub (d'un feuille ou d'un module) qui va demander un "show" de ta userform, juste avant de lancer le recalcul...
Résultat : Comme ta boîte (UserForm) est non modale, elle va s'afficher, ta sub va continuer (le recalcul), et comme tu as mis ton compteur dans l'initialize de la boîte, tu vas voir tout ça tout en pouvant cliquer ailleurs...
;-)
Alors, dans ce cas, il faut que tu crée une boîte de dialogue (UserForm)...
Dans les propriétés de ta UserForm, tu lui dis "False" à "ShowModal"...
Tu met un petit bouton "Fermer" et une petite étiquette (qui servivra au compteur)
Ensuite, tu récupères l'heure/minute en cours (minute+2) dans l'événement "Initialize" de ton objet "UserForm"...
Et toujours dans l'événement, tu fait ton compteur...
En //, dans une sub (d'un feuille ou d'un module) qui va demander un "show" de ta userform, juste avant de lancer le recalcul...
Résultat : Comme ta boîte (UserForm) est non modale, elle va s'afficher, ta sub va continuer (le recalcul), et comme tu as mis ton compteur dans l'initialize de la boîte, tu vas voir tout ça tout en pouvant cliquer ailleurs...
;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 13:18
8 juin 2005 à 13:18
Ok, bon merci pour tout, mais en fait je vais laisser tomber. Je vais juste garder ton idée dans la barre de status. C'est pas par difficulté (j'aime bien fouiller un peu), mais c'est qu'en fait, comme je l'ai dis dans mon premier post, on dirais qu'Excel plante (ex: en haut à gauche le logo excel est comme quand (ne répond pas), on a donc l'impressions que tout est planté.
Mais la tâche continue, et seule la barre de status est visible, je vais donc juste mettre un petit mot là dedans et ça ira. (Parce qu'après 2mn~ tout reviens normal, mais avec les données modifiées)
Merci pour tout, et désolé de t'avoir fait perdre un peu de temps.
@un de ses 4 sur le forum ;)
Mais la tâche continue, et seule la barre de status est visible, je vais donc juste mettre un petit mot là dedans et ça ira. (Parce qu'après 2mn~ tout reviens normal, mais avec les données modifiées)
Merci pour tout, et désolé de t'avoir fait perdre un peu de temps.
@un de ses 4 sur le forum ;)
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 13:30
8 juin 2005 à 13:30
;-) No problemo...
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 14:10
8 juin 2005 à 14:10
Dis voir WhiteFang, tu connais le php ? Enfin, je veux dire tu le maîtrise ?
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 14:26
8 juin 2005 à 14:26
;-)
Bin, heu....... ;-(
Cliques donc là : http://forum.aceboard.net/index.php?login=113149
Cela te donneras une idée de mes compétences...
En fait, question dev, je suis franchement lèg' en php et tout ce qui va avec, mais je suis dessus... Ca va viendre...
;-)
Bin, heu....... ;-(
Cliques donc là : http://forum.aceboard.net/index.php?login=113149
Cela te donneras une idée de mes compétences...
En fait, question dev, je suis franchement lèg' en php et tout ce qui va avec, mais je suis dessus... Ca va viendre...
;-)
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 14:27
8 juin 2005 à 14:27
;-) Mais ici, y'a des bons !! ;-) Enfin, sûrement meilleurs que moi...
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 14:28
8 juin 2005 à 14:28
Enfait c'est bon, on vient à l'instant de résoudre le problème. Merci quand même ^^
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
>
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
8 juin 2005 à 14:33
8 juin 2005 à 14:33
Et je viens de m'inscrire sur ton faux rhum ^^
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
>
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
8 juin 2005 à 14:52
8 juin 2005 à 14:52
;-)
Me laisse pas dans l'ignorance.... Tu as fait comment pour résoudre ton problème ???
;-)
Ps: Cool.. ;-) Merci..
Me laisse pas dans l'ignorance.... Tu as fait comment pour résoudre ton problème ???
;-)
Ps: Cool.. ;-) Merci..
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
8 juin 2005 à 17:13
8 juin 2005 à 17:13
;-)
Bien !
... Et quand tu auras le temps fait nous une jolie petite Userform ! ;-)
Bien !
... Et quand tu auras le temps fait nous une jolie petite Userform ! ;-)
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
8 juin 2005 à 17:58
8 juin 2005 à 17:58
Lol on verra ;9
Erdnax
Messages postés
2273
Date d'inscription
mercredi 1 octobre 2003
Statut
Contributeur
Dernière intervention
1 octobre 2007
497
22 juin 2005 à 14:35
22 juin 2005 à 14:35
Re White ;)
Alors voilà, j'ai essayé de faire un UserForm pour patienter, mais le problème c'est qu'il s'affiche bien, se masque bien, mais lorsqu'il est affiché, il est tout blanc ! même pas gris comme le fond, tout blanc ! Un peu comme s'il était planté !
Et là, ben... je comprends pas :D Alors si tu as une idée, elle est la bienvenue ;)
Merci
Alors voilà, j'ai essayé de faire un UserForm pour patienter, mais le problème c'est qu'il s'affiche bien, se masque bien, mais lorsqu'il est affiché, il est tout blanc ! même pas gris comme le fond, tout blanc ! Un peu comme s'il était planté !
Et là, ben... je comprends pas :D Alors si tu as une idée, elle est la bienvenue ;)
Merci
WhiteFang
Messages postés
2063
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
15 février 2008
204
22 juin 2005 à 20:21
22 juin 2005 à 20:21
;-)
Bin écoutes, franchement, j'avoue, je suis un peu débordé, voire même en surcharge, là !!
Vas là : http://forum.aceboard.net/index.php?login=113149 je serais obligé de te répondre, car en ce moment, je ne suis pas très actif ici, au risque de croire qu'on ne veut pas te répondre... Sauf que c'est le temps qui me manque...
;-)
Bin écoutes, franchement, j'avoue, je suis un peu débordé, voire même en surcharge, là !!
Vas là : http://forum.aceboard.net/index.php?login=113149 je serais obligé de te répondre, car en ce moment, je ne suis pas très actif ici, au risque de croire qu'on ne veut pas te répondre... Sauf que c'est le temps qui me manque...
;-)
Salut j'ai exactement le problème du fond blanc. Quelqu'un sait coment le résoudre ?
Etienne2323
Messages postés
7
Date d'inscription
lundi 23 juin 2008
Statut
Membre
Dernière intervention
31 juillet 2008
30 juin 2008 à 15:13
30 juin 2008 à 15:13
Tu as juste à insérer ceci dans ta sub à la suite de ton ".Show"
UserForm1.Repaint
Le ".Repaint" fera apparaitre le texte dans ton encadré blanc.
ET
UserForm1.Repaint
Le ".Repaint" fera apparaitre le texte dans ton encadré blanc.
ET