ProgressBar Sous EXcel avec VBA

Signaler
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
31 mars 2013
-
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
31 mars 2013
-
Bonjour à tous,

Voilà, peut-être que quelqu'un peut m'aider...
J'ai un programme où j'ai insérer un ProgressBar à l'aide naturellement d'un Userform.
Apparement, ce Userform doit être non Modal donc, lors du chargement, j'ai tapé :
Userform1.Show vbModeless (d'après mon guide VBA). Toute fois, quand j'exécute mon programme, le Userform  s'affiche, mais est tout blanc.... Impossible de voir la bare de progression.
Quelqu'un connaît ça?

Merci d'avance.

Tom

9 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

ce n'est pas dû au MODAL, mais le fait que ta boucle en arrière consomme toutes les ressources
ajoute DOEVENTS dans ta boucle, et si çà ne suffit pas ajoute également progressbar.refresh après avoir changé sa valeur

lien utile :

Q : [../doc/faq.aspx#vb_doevents Code : Mon application freeze lors d'une
longue opération, comment y rémedier]






++


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
31 mars 2013

Merci de ta réponse
Maintenant, la Barre on la voit, mais elle n'avance pas...
Pourtant, mon code est de la forme :

ProgressBar.Show vbModeless
ProgressBar.ProgressBar1.value = 10
ProgressBar.ProgressBar.Refresh

(Code)

ProgressBar.ProgressBar1.value = 50
ProgressBar.ProgressBar1.Refresh

(Code)

Ect...

Est-il possible que la barre de progression soit trop lente pour mon code? Il est vrai que j'ai tenté de mettre une barre de progression pour un code qui met environs 2 à 3 seconde pour se réaliser.
Le fait que ce ne soit pas un module qui réalise ce code peut aussi jouer?

Merci de vos réponses.

ThomasF
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
2 3  secondes, tu devrais quand même voir la progression
essaye aussi de rafraichir le userform?


ProgressBar.Show vbModeless
ProgressBar.ProgressBar1.value = 10

ProgressBar.ProgressBar1.Refresh


ProgressBar.Refresh

Doevents 'eventuellement


...






code pas en module, non çà ne doit pas jouer...


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour

As-tu aussi défini les propriétés Min et Max de l'objet ?


Exemple


ProgressBar.ProgressBar1.Min = 0
ProgressBar.ProgressBar1.Max = 100
ProgressBar.ProgressBar1.Value = 50


Amicalement
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
31 mars 2013

C'est bon ça marche, en fait, j'ai rajouté DoEvents et je rafraîchissait a chaque fois que je faisais une progression de la barre.(DoEvents, je l'avais écrit qu'une seule fois...)

Merci à tous de votre aide.

ThomasF
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour Thomas

Juste une petite question sur : j'ai insérer un ProgressBar à l'aide naturellement d'un Userform

Est-ce que tu veux dire qu'un Userform a été nécessaire pour insérer le ProgressBar ?

Amicalement
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
[../auteur/OROHENA/1483575.aspx Orohena]

-> perso je ne comprends pas ta question..., la progressbar est un contrôle graphique (visuel), il faut bien la poser... ? à moins que tu fasses simplement la différence entre la poser sur un userform ou à même le classeur...



[../auteur/THOMASF007/1401069.aspx thomasf007]

-> parfait si çà fonctionne ;), n'oublie pas de valider la ou les bonnes réponses

++


Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
578
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour PCPT

>> à moins que tu fasses simplement la différence entre la poser sur un userform ou à même le classeur

Oui, c'est bien ça. En fait, je souhaitais savoir si le UserForm contenait juste le ProgressBar ou d'autres contrôles.

A cause de ma formation, antérieure au multifenêtrage, j'ai plus ou moins gardé l'habitude de mettre tous mes contrôles dans la même fenêtre. Donc si j'ai besoin d'une ProgressBar, j'ai le reflexe naturel de la mettre dans la même fenêtre que les autres contrôles et de la masquer ou la rendre visible selon les besoins. Mais l'idée de Thomas (si j'ai bien compris) c'est d'afficher un UserForm fugitif avec un ProgressBar. C'est sympa et, à la réflexion, évident. Discuter sur ce forum, ça me permet de bousculer mes habitudes, d'évoluer.

Amicalement
Messages postés
36
Date d'inscription
vendredi 23 mai 2008
Statut
Membre
Dernière intervention
31 mars 2013

Bonjour à tous,

En fait il y a 2 solutions (pour les deux solutions, il faut faire ça avec un Userform) :

- Insérer un ProgressBar, Lui dire le minimum et le maximum et la faire evoluer en fonction du Code. (Classique, si l'on possède le véritable Objet PROGRESSBAR)
- Créer un Label, effacer tout le texte qu'il y a, mettre une couleur de fond (bleu par exemple...) et jouer avec la fonction Width. Pour cette méthode, il a un petit calcul à faire, car Width peut ête supérieur à 100.

Amicalement,

PCPT> P.S: qu'appelles-tu valider la bonne réponse? Faut-il mettre le code sur le site?

ThomasF