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-E] Macro tres longue


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut [VBA-E] Macro tres longue
    salut a tous

    voila , suite a votre aide ds le forum , on m'a proposer cettte macro qui fonctionne bien ( correspond a mes attentes) mais elle est tres longue ( environ 20 a 30 seconde dans le projet final)

    Le but etant de remplire un listbox en fonction du statut du personnel
    Dans feuil 1 , j'ai une liste de nom avec le statut "PAYE" ou rien
    Le probleme est que qd je demarre cette macro , je vois la macro , selectionner les noms dans la collone B un par un et une fois terminé , le listbox , s'affiche corectement.

    Idem , si je valide un payement avec le Bouton " PAYEMENT" qui entraine une initialisation du listbox.

    Qqun a une idée ???
    merci a vous

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Au début de ta macro, mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenupdating = false
    et avant End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenupdating = True

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    Citation Envoyé par ouskel'n'or
    Au début de ta macro, mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenupdating = false
    et avant End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenupdating = True

    Salut a toi et merci de ton aide

    En fait quel est le probleme concernant la lenteur de la macro ?
    A quoi correspond "screenupdating" et faut il que je le colle ds l'action du bouton ou dans le module ( car la fonction se trouve ds un modul)

    Serait il plus simple de mettre la fonction directement dans le code du USF en ajoutant ton code ?

    Grand merci a toi

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par zouille
    En fait quel est le probleme concernant la lenteur de la macro ?
    La mise à jour de l'affichage du classeur prend énoooooooormément de temps... c'est cela qui ralentit ta macro.

    Citation Envoyé par zouille
    A quoi correspond "screenupdating"
    "screenupdating"="mise à jour de l'écran"
    Si tu le passes à false, il n'y a plus de mise à jour de faite, l'écran reste figé. La macro ne perd plus de temps, elle va beaucoup plus vite.

    Citation Envoyé par zouille
    et faut il que je le colle ds l'action du bouton ou dans le module ( car la fonction se trouve ds un modul)
    Tu encadres la portion de code qui fait des changements de pages en pagaille... avec un =false au début, et un =true à la fin

    Citation Envoyé par zouille
    Serait il plus simple de mettre la fonction directement dans le code du USF en ajoutant ton code ?
    Euh... est-ce plus compliqué de la laisser là où elle est???
    En plus, il vaut mieux séparer le traitement du classeur de l'interface graphique, donc laisse les séparés...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Merci plegat, grâce à toi j'ai pu aller aux champignons

  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par ouskel'n'or
    Merci plegat, grâce à toi j'ai pu aller aux champignons
    Ne me parle pas de champignons!!! J'en ai mangé toute la semaine, je frôle l'indigestion!
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai l'impression que zouille s'est perdu dans la forêt

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    Citation Envoyé par ouskel'n'or
    J'ai l'impression que zouille s'est perdu dans la forêt
    Non je ne suis pas perdu , ca va ,mais je ne suis pas present tout les jours a la maison ( c 'est ca l'armee)

    Encore merci a vous , ca fonctionne bien par contre j'avais remarqué que la macro etait longue uniquement qd j'etait sous VISUAL BASIC EDITOR sinon en normal c'est rapide : étrange !,!

  9. #9
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 819
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 819
    Par défaut
    Citation Envoyé par zouille
    Encore merci a vous , ca fonctionne bien par contre j'avais remarqué que la macro etait longue uniquement qd j'etait sous VISUAL BASIC EDITOR sinon en normal c'est rapide : étrange !,!
    Ca me le fait tout le temps... mais je n'ai pas l'explication.
    Cela dit, l'éditeur n'a à être ouvert que quand tu programmes, et quand tu débuggues... ensuite, en exécution normale, il n'a aucune raison d'être ouvert.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  10. #10
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    Citation Envoyé par plegat
    Ca me le fait tout le temps... mais je n'ai pas l'explication.
    Cela dit, l'éditeur n'a à être ouvert que quand tu programmes, et quand tu débuggues... ensuite, en exécution normale, il n'a aucune raison d'être ouvert.
    Tout a fait d'accord avec toi
    Je suis aussi surpris de cette lenteur mais bon , c'est juste pendant la prog ou débug.

    Par contre sur mon ordi ( a la maison) ca ram meme sans l editeur ouvert

    je joint mon fichier pour que vous fassiez un test de chez vous

    merci a toi

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    En fait cela vient de tes formules utilisant RECHERCHEV.
    Mets au début de ta macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationManual
    Et à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Même si ces formules ne sont pas liées à la feuille dans laquelle tu colles tes valeurs, Excel ressent quand même l'envie de faire le recalcul...

  12. #12
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    Citation Envoyé par dadavyvy
    En fait cela vient de tes formules utilisant RECHERCHEV.
    Mets au début de ta macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationManual
    Et à la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.Calculation = xlCalculationAutomatic
    Application.Calculate
    Même si ces formules ne sont pas liées à la feuille dans laquelle tu colles tes valeurs, Excel ressent quand même l'envie de faire le recalcul...
    SUPER COOL
    enfin ca marche , merci bien a toi
    maintenant ca met 2 a 3 secondes max :

    Par contre selon les conseils de ouskel'n'or, dois je ajouter : Application.screenupdating =false

    Excel est vraiment etrange qq fois
    MERCI encore

    ps : Vois tu des choses inutiles ou plus simple a ecrire dans mon projet ( histoire d'etre moins lourd et plus rapide)

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Application.screenupdating =false
    ne ralentit en aucun cas le programme et a des chances de l'accélérer, alors mets le sur la première ligne de ta macro et ôte-le sur la dernière ligne
    Je suis juste revenu pour te dire ça puisque c'est résolu...

  14. #14
    Membre confirmé
    Inscrit en
    Décembre 2005
    Messages
    164
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 164
    Par défaut
    merci a toi

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

Discussions similaires

  1. [VBA] Excel + macro + aléatoire
    Par spopo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2006, 15h42
  2. association de donnee tres longue
    Par pitch21 dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 21/10/2005, 15h04
  3. [Compilation] Chaine string Tres tres longues
    Par Clorish dans le forum Langage
    Réponses: 9
    Dernier message: 20/07/2005, 11h20
  4. [VBA-E] macro conversion excel vers csv
    Par baboune dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/07/2004, 09h23
  5. [VBA-E] Macro ouverture fichier déja ouvert
    Par bhaal76 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 14h30

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