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 :

Alléger l'exécution d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 345
    Billets dans le blog
    1
    Par défaut Alléger l'exécution d'une macro
    Bonjour à tous

    J'ai une macro qui prend 10 à 15 secondes se réaliser, et je souhaiterai que l'utilisateur puisse normalement continuer à travailler sous Excel durant ce laps de temps.

    J'utilise déjà DoEvents qui permet déjà d'éviter l'effet de "freezing" lié à l'exécution de la macro.

    Mais le PC semble être encore fortement sollicité, rendant Excel plus lent qu'à la normal. Est-il possible de rendre la macro plus légère en consommation de processeur (au détriment de sa rapidité d'exécution) ?

    Merci si vous avez des idées...

    Bon dimanche =)

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour sympasteve le forum je pense que ta macro il faut l'optimiser pour aller plus vite il faudrait voir ta macro

    supprimer les .selects si tu en as ect..
    un exemple deja pour aller plus vite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Sub es()
    'declarer les variables au plus juste
    With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
    'ton code
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Calculation = xlCalculationAutomatic
    End With
    End Sub
    ps ne pas mettre de doevents dans ton cas tu vas ralentir encore plus!!

  3. #3
    Membre très actif

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 345
    Billets dans le blog
    1
    Par défaut
    Merci pour ta réponse,

    En fait, je ne cherche pas à l'accélérer. La macro prend 10 à 15 secondes car elle traite des pages web via une DLL... bref, il n'y pas vraiment moyen de la rendre instantanée.

    A défaut, comme le temps d'exécution importe peu (15 sec ou 1 min), ce serait bien si il y avait un moyen de ralentir la macro afin que l'utilisateur puisse continuer à utiliser Excel normalement (car toutes les ressources ne seraient pas bouffer).

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 345
    Billets dans le blog
    1
    Par défaut
    En fait, le problème peut se simplifier ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
     
    For i=1 to 99999
     
    // ici une série d'instruction quelconque
     
    Next i
     
    End sub

    En l'exécutant, tout Excel est paralysé jusqu'à la fin de la macro.

    En insérant, DoEvents dans la boucle FOR, Excel n'est plus paralysé mais sa reste lent.

    Qu'est ce qui pourait permettre à Excel d'exécuter cette macro sans que tout le système ralentisse ?

    J'ai entendu parler de multithreading, mais...

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, dans ce cas la. cela va être difficile.le multithreading excel a ma connaissance ne le gere pas peut etre mettre des "pauses" dans ta macro

Discussions similaires

  1. Exécution d'une macro dans une base Access en VB6
    Par Safaritn dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/05/2007, 17h00
  2. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 21h50
  3. [EXCEL] interrompre l'exécution d'une macro
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2006, 10h24
  4. [VBA-E]Exécution d'une macro en arrière-plan
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/04/2006, 23h13
  5. Allongement d'uin temps d'exécution d'une macro
    Par avanrill dans le forum Access
    Réponses: 2
    Dernier message: 06/03/2006, 19h29

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