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 :

Implémentation d'une ProgressBar dans un code


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Implémentation d'une ProgressBar dans un code
    Bonsoir,
    J'ai vu cette contribution de Patricktoulon
    Je te remercie pour ta démo, de tout ce que tu fais, de ton engagement pour ce forum, encore un grand merci...
    J'ai de nombreux codes à rallonge dont je dois faire patienter l'utilisateur, ta progressbar m'interesse beaucoup, et j'ai une question pour finaliser ta contribution, à quelle endroit dans ton module faut-il que je place ma macro par "Call Module01"et ainsi voir ta progressbar se déplacer le temps de ma macro.
    Encore merci à toi

  2. #2
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour vadorblanc
    Citation Envoyé par Vadorblanc Voir le message
    Bonsoir Patricktoulon
    Je te remercie pour ta démo, de tout ce que tu fais, de ton engagement pour ce forum, encore un grand merci...
    J'ai de nombreux codes à rallonge dont je dois faire patienter l'utilisateur, ta progressbar m'intéresse beaucoup, et j'ai une question pour finaliser ta contribution, à quelle endroit dans ton module faut-il que je place ma macro par "Call Module01"et ainsi voir ta progressbar se déplacer le temps de ma macro.
    Encore merci à toi
    ""Call Module01"" kezako ca ???

    je suppose que tu demande comment mettre ta macro apparemment longue

    et dans ta macro il y a certainement une variable qui s'incrémente un peu comma dans la mienne dans la demo

    et bien c'est dans cette boucle qu'il faut que tu mette
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Progressbarre ta variable ,variable limite maximale
    je te rappelle pour que tu comprenne que:
    dans ma function ta variable et la variable limite que tu va injecté va être divise par la largeur ou la hauteur du "fondprogress" selon le sens pour que le mouvement soit syncro avec l'évolution de ta boucle de ta macro
    donc si ton fond progress fait 200 de large et que ta macro fait 400boucle
    sa donnera
    la progressbarre avancera de tavariable* fondprogress/400 '400 etant la limite que j'ai pris dans cette exemple mais tout ca c'est la fonction qui s'en charge


    et maintenant je n'en sais pas plus sur ta macro donc je ne peut pas t'en dire plus

    en espérant 't'avoir aidé

    au plaisir

  3. #3
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonsoir Patricktoulon
    "Call Module01" kezako ca ???
    C'est une façon d'appeler une procédure par un bloc Sub / End Sub, et dans mon module01 se trouve mes lignes de code d'une durée d'environ 30 secondes, et c'est pendant ce délais que je souhaiterais voir ta progressbar s'activer. Pour le moment je n'y arrive pas.
    Donc dans ton fichier quand je clic sur ton bouton ta progressbar s'active, dans ton même fichier quand je fais Alt + F8 je commande ma macro Module01 qui s'exécute bien pendant 30 secondes.
    Reste à concilier les 2, et là je ne vois pas comment faire... car ta progressbar est concue par un bloc de plusieurs fonctions, et là je coince.
    Bonne soirée

  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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour vadorblanc

    j'avoue que je n'ai encore jamais vu ça
    appeler un module

    parti de la j'ai du mal a comprendre ce que tu cherche a faire

    1 question
    as tu ajouté mon userform en tant que progressbarre ou a tu copier le code dans leur modules respectifs

    sinon envoie la partie du code qui tourne 30s et je regarderais

  5. #5
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour
    J'ai pris ton fichier et j'ai importé tous mes modules dedans...
    Maintenant comment fais tu pour associer ta progressbar à un code long ?
    Merci

  6. #6
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    hahahah

    fainéant va
    et bien c'est simple
    ce qu'il y a dans le bouton "democlick" apres "for ...to..." doit être dans ta boucle
    si ta boucle se trouve dans un module standard et pas dans le userform
    il va falloir faire une modif

    ajoute dans mon module juste apres ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     Set slider = usf.Controls.Add("Forms.Image.1", "PROGRESSBARRE", True)
        'on ajuste le slider en fonction du fondprogress et en fonction du sens determiné au depart de la fonction sur la condition _
         du width et du height de celui ci
        With slider
    ceci:
    ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Set slider = usf.Controls.Add("Forms.Image.1", "PROGRESSBARRE", True)
        'on ajuste le slider en fonction du fondprogress et en fonction du sens determiné au depart de la fonction sur la condition _
         du width et du height de celui ci
        With slider
    .name=Progressbarre 
    'laisse le reste du code tel quel
    et remplace dans mon module la fonction progressbarre par celle ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function Progressbarre(e, fin)
        On Error Resume Next
        If sens = vertical Then
            maform.Progressbarre.Height = (hauteur / fin) * e
            maform.Progressbarre.Top = maform.fondprogress.Top + (hauteur - (hauteur / fin) * e) + 1    
        ElseIf sens <> vertical Then maform.Progressbarre.Width = (largeur / fin) * e
        End If
        DoEvents    ' ne pas oublié de mettre ce doevents sinon l'effet est trop rapide
        On Error GoTo 0
    End Function
    a na pas oublier que :

    la variable e est alimentée par ta propre boucle et fin et la limite de ta boucle
    sans ca ca ne peut pas marcher
    je ne vois pas comment être plus clair

    au plaisir

  7. #7
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    J'aime bien quand tu mets hahahah

    J'ai fait ce que tu as mis
    Reste à placer au bon endroit soit mon code long, soit un appel de mon module code long par un Call

    Indique moi plus précisément ton explication > ce qu'il y a dans le bouton "democlick" apres "for ...to..." doit être dans ta boucle


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub CommandButton1_Click()
        For i = 1 To 50000
            Progressbarre i, 50000
        Next
    End Sub

    Merci à toi

  8. #8
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    comme je te l'ai deja dis

    c'est progressbarre i,50000 que tu doit deplacer dans ton module ou il y a ta macro longue

    i etant l'exemple pour moi mais pour toi dans ta macro longue il y a une variable qui augmente jusqu'a une certaine limite

    et bien a la place de i tu met ta variable et a la place de 50000 tu met le maxiùmum de ta boucle

    ca donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     progressbarre ta variable,le max de taboucle
    ca tu le met a l'interieur de ta boucle

    purré si tu y arrive pas envoie ton fichier je sais plus comment te l'expliquer moi

  9. #9
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Patricktoulon, je ne te suis pas...

    Je n'ai jamais écrit que j'avais une boucle, j'ai mis plusieurs fois que j'avais un simple code dans un module, certe un code long qui s'exécute pendant 30 secondes, mais un code dans un module, donc soit je mets mes lignes de code à l'emplacement précis que tu voudras bien me dire, soit je mets la commande Call suivi du nom de mon module à l'emplacement précis que tu voudras bien me dire, l'un ou l'autre c'est la même chose, mon code doit s'exécuter en même temps et je dois voir ta progress bar avancer.

    Pourquoi est-ce si compliqué de me dire ou mettre mon code ? et de faire fonctionner ta progressbar avec un code ?

    Merci à toi

  10. #10
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    si tu n'a pas de boucle dans ta macro longue

    quest ce qui peut durré ce temps il me faut plus d'information

    je vois ce que tu veux faire
    faire tourner ma boucle en meme temps que ta macro longue

    c'est un peu tiré par les cheveux

    pour la derniere fois donne mois un bout de code ou je ne sais quoi
    pour que je puisse te trouver une solution

    on va pas y passer le weekend pour une variable comprend tu ?

    j'attend le retour

    au plaisir

  11. #11
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Patricktoulon
    Tu as fait une progressbar normalement qui doit tourner avec du code, plutôt que d'essayer d'adapter mon code long à ta progressbar,on n'y arrive pas, je te demande de faire tourner ta progressbar avec un code à toi qui dure un certain temps, tout en voyant ta progressbar avancer avec ton code, sinon pourquoi avoir fait une progressbar ?
    Pour moi une progressbar fait patienter l'utilisateur d'une macro longue ou d'une boucle longue, peu importe...
    Pour le moment ta démo nous montre une progressbar toute plate, j'attends maintenant une démo avec une progressbar qui évolue en fonction d'un code (un code pour moi comprend aussi des boucles éventuellement).
    Bien cordialement.

  12. #12
    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
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour vador blanc

    j'ai reçu ton message dans ma boite mail mais je ne le vois pas dans le fil de la discussion

    cependant je vais répondre a ta question

    la réponse est non une progressebars n'est pas fait pour faire patienter l'utilisateur elle est faite pour donner un aperçu du travail effectué par ta macro ou fonction

    ce la dit si tu y tiens
    quand tu lance ta propre macro tu pourrais lancer une boucle (la même que dans le clic demo en changeant le 50000 en fonction du temps que tu a besoins

    mais pour ma part faire un truc pareil juste pour avoir un truc qui bouge en attendant c'est inutile

    si ta macro qui dure des plombes elle doit avoir certainement des iterations
    c'est impossible que ce soit le contraire

    au plaisir

    avec a l'interieur un doevents

Discussions similaires

  1. Importer une librairie dans un code c++
    Par wikers dans le forum Linux
    Réponses: 6
    Dernier message: 14/08/2009, 01h31
  2. [MFC] afficher une ProgressBar dans une barre d'etat
    Par guillaume21 dans le forum MFC
    Réponses: 5
    Dernier message: 30/03/2007, 12h16
  3. [VB.Net] Une progressbar dans une statusbar
    Par tomnie dans le forum Windows Forms
    Réponses: 6
    Dernier message: 14/12/2005, 11h13
  4. [FLASH MX2004] Utiliser une variable dans le code
    Par arnolem dans le forum Flash
    Réponses: 25
    Dernier message: 02/12/2005, 17h37
  5. [vb.net] utilisation d'une variable dans le code
    Par arnolem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/09/2005, 20h22

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