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 :

Fonctionnement de progress bar


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut Fonctionnement de progress bar
    Bonsoir à tous les experts, une fois n'est pas coutume, je viens quémander votre aide pour comprendre le fonctionnement des progressbar. J'ai une macro relativement rapide (10 secondes à peine d'éxécution). Mais plutot que de voir le PC rien faire, je voudrais ajouter une progressbar d'avancement de la macro. Mais je sèche complètement sur son fonctionnement. J'ai essayé nombre de manipulation mais rien à y faire.

    J'ai créer un UserForm avec ma progressbar et un bouton démarrer. Mais lorsque j'appel ma macro principal de traitement, il bloque (dépassement de capacité)

    VOici le code de l'UserForm :

    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
    18
    19
    20
    21
    22
    Private Sub CommandButton1_Click()
    Label1.Caption = "Traitement en cours !"
    ProgressBar1.Value = 0
     
    Dim r As Integer
     
    For r = 1 To ProgressBar1.Max
       Call test_import
       ProgressBar1.Value = i
    Next
     
    Label1.Caption = "Traitement terminé !"
     
    End Sub
     
    Private Sub Label1_Click()
     
    End Sub
     
    Private Sub ProgressBar1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
     
    End Sub

    Pas fou, j'ai fait le test de mettre le call après la boucle de l'userform et là ca marche sans pb !! Mais sans grand intérêt non plus .

    Merci de votre aide si précieuse...

    Ps : je joins le code de ma macro principale au cas où...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir le forum,

    Tu trouveras ton bonheur ici : http://silkyroad.developpez.com/VBA/...erForm/#LIII-K

    Si je n'ai pas réussi à envoyer le lien comme il faut, vas dans les tutos excel, dans les contrôles d'un userform.

    Sinon dans ton code, peut être faut-il aussi remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
    Label1.Caption = "Traitement en cours !"
    ProgressBar1.Value = 0
     
    Dim r As Integer
     
    For r = 1 To ProgressBar1.Max
       Call test_import
       ProgressBar1.Value = i
    Next
     
    Label1.Caption = "Traitement terminé !"
     
    End Sub
    le "i" par "r" ce qui me semble plus logique.

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut
    Bonjour Duddy. Merci pour ta réponse. Merci également pour le lien, mais c'est exactement d'ici que vient le code pour ma progressbar.

    J'ai essayé ce que tu disais sans plus de succès j'avais changé le i en r parce que dans mon code j'ai déjà un i je me disais que ca pouvait faire un conflit.

    En fait, la macro de progress bar fonctionne sans problème quand elle est toute seule.

    Ma macro de mise en forme fonctionne très bien quand elle est toute seule.

    Mais je n'arrive pas à lier les deux... Je me retrouve avec des problèmes de dépassement de capacité ou de sélection range qui échoue... C'est assez surprenant... Pourtant je ne fais que appeler mon module.

    Je suis bloqué.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut une idée
    pour ta progressbar tu n'a pas besoin de faire une autre macro que celle qui fait le travail durant 10 secondes que tu a cité plus haut
    ilte suffit de mettre en fin de boucle avant le "end if ou next "
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
     
     
    userform1.progressbar1=(lettre qui te sert a faire taboucle)
    en effet surtout ne pas oublier de mettre "userform1."devantprogressbar1" surtout si la macro ne se trouve pas dans le userform

    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir le forum,

    Normalement, j'utilise la progressbar dans l'exécution d'un code qui regarde soit un fichier avec X lignes ou un nombre de fichier à traiter et donc cela me donne:

    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
    Sub test()
     
    with tonForm.Progressbar1
    .mini=0
    .maxi=100
    end with
     
    x=2
    while taFeuille.cells(x,1)<>""
     
    msgbox "la ligne regardée est la ligne n° " & x
     
    tonForm.Progressbar1.value=x
     
    x=x+1
    wend
    end sub
    C'est un exemple écrit de mémoire et à adapter à ta situation.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 75
    Par défaut
    Merci Duddy j'ai réussi à la faire fonctionner. Encore merci de ton aide.

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

Discussions similaires

  1. Comment fonctionne une Progress Bar
    Par loulag07 dans le forum Débuter
    Réponses: 2
    Dernier message: 10/01/2008, 15h37
  2. Comment la progress bar fonctionne?
    Par Micheal1221 dans le forum C++Builder
    Réponses: 6
    Dernier message: 06/07/2006, 13h53
  3. [MFC]Changer la couleur d'un progress bar
    Par Deedier dans le forum MFC
    Réponses: 1
    Dernier message: 21/04/2005, 18h39
  4. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 09h23
  5. Progress bar au boot
    Par saibe dans le forum Administration système
    Réponses: 2
    Dernier message: 18/08/2003, 10h01

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