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 :

[VBA EXCEL] : ProgressBar


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut [VBA EXCEL] : ProgressBar
    Bonjour,

    Voila j'aimerai savoir comment faire evoluer la progress bar et j'aimerai surtout savoir si on doit l'inclure dans une nouvelle userform ?

    Si oui comment faire pour que la progressbar se remplisse en fonction du traitement du code sur la fenetre principale ?

    Merci

  2. #2
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    1er element de réponse:

    pour faire evoluer une progressbar:
    1. Fixer les propriétés Min et Max
    2. Départ : ProgressBar.Value=Min
    3. Puis incrémenter la propriété Value jusqu'à atteindre Max

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    ok merci pour cette reponse !

  4. #4
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    A toi de fixer les moments où tu souhaites incrémenter (par exemple au cours d'une boucle).

    Cependant, il ne faut pas s'attendre à une progression homogène. Il doit sans doute exister une fonction permettant d'obtenir cette homogénéité, mais je ne la connais pas...

    Quelqu'un a-t-il une idée ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    oui c'est ce que je viens de faire pour l'incrementation et ca fonctionne nickel !

    Mais je pense que ca aurait été plus interessant d'integrer la progressbar dans une nouvelle userform parceque la je fait apparaitre la progression dans la fenetre en cours...

  6. #6
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    tu veux dire dans un userform a part genre popup ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    exactement

  8. #8
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    normalement ça ne change rien:

    tu Load ton form, tu lances ton traitement et tu mets a jour la progressbar du "popup".
    Ensuite, tu UnLoad le popup.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Pour faire une belle progress bar, il faut en 1er lieu se fendre d'un userform adapté.

    => CREER UN USERFORM AVEC UNE BARRE ET UN LABEL !
    Elle contient :
    - une textbox qui doit s'appeller FramePROGBAR
    - une barre qui doit s'appeller LabelPROGBAR
    (en fait, cette barre n'est rien d'autre qu'un label avec un effet 3D et pas de texte dedans ...rusé non ?)

    Note : Tu peux creer tous types de progbars (à 2 niveaux, qui noircissent quand on arrive vers 100%, avec des captions qui indiquent le %age...)


    On passe au code :
    -> Dans le code de la progbar, il te faut un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_activate()
        Call main
    'ou main est ta marco principale
    End Sub
    Puis, dans un module quelconque modulepouet (pas dans le code de la form), il te faut ecrire une procedure de controle de la userform de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub gestionProgbar(Avancement)
    ' Ze progress bar !!!!
     
    AvancementColor= 255 - Round(255 * Pct, 0) 'pour colorier ;)
     
        With UserForm1
            .FramePROGBAR.Caption = Format(Avancement, "0%")
            .LabelPROGBAR.Width = (.FrameProgress.Width - 10)*Avancement  'TAILLE de la bar
            .LabelPROGBAR.BackColor = RGB(0, AvancementColor/ 3, AvancementColor) 'pour du bleu
            .Repaint
        End With
    End Sub
    Si on a bien bossé avant, la userform doit avoir le FramePROGBAR le LabelPROGBAR qui vont bien donc ca devrait marcher !!!

    Dans modulepouet / main tu codes ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub main()
    for I = 1 to 100
    'Call actionalacon
    Call gestionProgbar(I/100)
    next I
     
    'a la fin du code il faut (evidement !) :!
    unload userform1
    end sub
    tu lances ta macro dans un programme de modulepouet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub launcher()
     
    'Facultatif : 
    UserForm1.LabelProgress.Width = 0 '(initialize la bar à zero)
    'c'est utile si on affiche une msgbow juste avant...
    '
    userform1.show
    end sub

    et voili
    P.S. : Cet exemple est dispo sur PLEIN de sites internet...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    J'arrive pas a le faire fonctionner mais bon...

    Je crois que je vais me contenter de la progressbar directement dans la feuille principale

  11. #11
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    je vais garder ton exemple sous le coude, stupid, il a l'air intéressant
    (je ne l'ai pas testé, mais je le ferai sans doute bientôt)

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    Encor une question...

    J'ai ajouté un label au dessus de ma progressbar qui change en fonction du traitement effectué.

    Pourquoi je n'ai aucun changement visible pendant l'execution de ma macro ?

    En revanche lorsque je le lance pas à pas ben la modification de label se fait bien et est visible sur ma fenetre...

    j'ai utilisé pour le changement :

    Me.LblTraitement.caption = "Toto"

    puis plus loin je met :

    Me.LblTraitement.caption = "Tutu"


    Mais rien y fait

  13. #13
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Il faut savoir parfois "donner du temps au temps"
    Regarde dans l'aide en ligne à quoi sert Doevents, qui est peut-être là suffisant...
    (vérifie aussi que tu n'as pas joué, dans ton code avec les valeurs true et false de la propriété visible du label... on se sait jamais...)

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 212
    Par défaut
    Merci Bcp ca marche

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Citation Envoyé par jmfmarques
    Il faut savoir parfois "donner du temps au temps"
    Regarde dans l'aide en ligne à quoi sert Doevents, qui est peut-être là suffisant...
    (vérifie aussi que tu n'as pas joué, dans ton code avec les valeurs true et false de la propriété visible du label... on se sait jamais...)
    A mon avis, il manque sans doute un .repaint
    je peux balancer par mail ma progbar si vous voulez

  16. #16
    Membre éprouvé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Par défaut
    -edit-
    A mon avis, il manque sans doute un .repaint
    -/edit-

    Citation Envoyé par forsay1
    Merci Bcp ca marche
    apparemment il a la solution...

    ?

  17. #17
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    apparemment il a la solution...
    been oui...
    Doevents est là pour celà...

    En ce qui concerne maintenant le "Repaint" : si là était le problème, le pas à pas aurait également failli, non ? Alors que le demandeur disait que tout fonctionnait bien en pas à pas ...

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Citation Envoyé par jmfmarques
    been oui...
    Doevents est là pour celà...

    En ce qui concerne maintenant le "Repaint" : si là était le problème, le pas à pas aurait également failli, non ? Alors que le demandeur disait que tout fonctionnait bien en pas à pas ...
    pas fondamentalement !
    anyway...
    EDIT :

    Au temps pour moi, je confondais avec un autre membre avec qui j'ai discuté en MP et a qui j'ai envoyé mon fichier Excel avec ma progbar (enfin...MA... je l'ai pompée qquepart alors...)


    Trop bon, je viens de voir qu'on pouvait uploader des trucs !!!
    => en PJ ma progbar
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. [VBA-Excel,VB6,Fichier texte]enregistrer un classeur excel..
    Par Tarul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 13h09
  2. [vba-excel] Le temps de fermeture trop court ?
    Par Damsou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/01/2005, 10h03
  3. [VBA-Excel]
    Par Damsou dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/01/2005, 10h17
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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