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 :

Comment accélérer l'execution d'une macro [XL-2003]


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
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut Comment accélérer l'execution d'une macro
    Bonjour,
    Lorsque j'utilise certaines de mes macros qui traitent beaucoup de données, l'execution est longue. On m'avait conseillé d'utiliser les macros ci-dessous en début (ini_sub) et en fin (fin_sub) pour accélérer le traitement. Il y a un écart mais pas immense . De plus toutes les applications Excel ouvertes sont bloquées lorsque la macro fonctionne avec ces 2 macros supplémentaires. Existe t-il un autre moyen d'accélérer l'execution et de ne pas bloquer les autres fichiers Excel ouverts ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Sub ini_sub()
     
        Application.DisplayAlerts = False 'messages excel
        Application.DisplayStatusBar = True ' info avancement macro dans barre d'infos en bas écran
        Application.StatusBar = "Synthèse PEPS en cours"
        Application.ScreenUpdating = False 'rafraichissement ecran (pour ne pas voir défiler les macros)
        Application.Cursor = xlWait 'sablier
        Application.Calculation = xlCalculationManual ' supprime calcul auto EXCEL pour gagner du temps.  A remettre dans fin_sub
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Public Sub fin_sub()
     
        Application.DisplayAlerts = True
        Application.StatusBar = "Synthèse OK"
        Application.ScreenUpdating = True 'rafrfraichissement ecran
        Application.Cursor = xlDefault 'sablier
        Application.Calculation = xlCalculationAutomatic
     
    End Sub
    Merci par avance
    MichaSarah

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour

    Si tu expliquais ta macro et nou la montrais peut être on aurait un moyen de te l'accélérer.

    à te lire

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonsoir wilfried_42,
    En pièce jointe le fichier concerné. Après avoir rappatrié un onglet de 14000 lignes dans le fichier "SynthèsePEPS" , j'effectue des tests en fct des pgm , des années et des secteurs.
    Durée : ~14 minutes sans les macros "ini", ~12 min avec les macros "ini".

    Salutations
    MichaSarah
    Fichiers attachés Fichiers attachés

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    La lenteur de ton code vient de tout les Select que tu utilises, cela ne sert à rien.

    Il y a beaucoup de discussions sur le sujet :

    rendre ma macro plus rapide

    Philippe

  5. #5
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:, bonjour philippe

    comme le dit philippe les select ralentissent le code. l'enregistreur de macros est très interressant mais il traduit toutes les actions manuelles qu'il faut adapter : un exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("RQ_T501_ESSAI").Select
    Columns("A:A").Select
    Selection.Copy
    Sheets("extract°opt").Select
    Columns("A:A").Select
    ActiveSheet.Paste
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("RQ_T501_ESSAI").Range("A:A").Copy Destination:=Sheets("extract°opt").Range("A1")
    en survolant le reste du code, il y a bien d'autres améliorations possibles mais je ne sais pas exactement ce que fait le code ou sensé donner comme résultat.
    fait ces modif, ca epurera le code qui deviendra plus lisible, je pense qu'on pourra supprimer plusieurs boucles dans le futur

    cordialement

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonjour Philippe et wilfried_42,
    Je teste cette semaine en supprimant plusieurs SELECT et je vous retourne le résultat.
    Encore merci

    MichaSarah

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Par défaut
    Bonjour,
    Je ne sais pas si ça aidera mais j'ai eu un problème de macros trop longue et pour raccourcir le temps en plus de supprimer un maximum de Select, j'ai utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False

    ce qui empêche la MAJ de la page Excel qui s'exécute...

    Voilà bon courage

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

Discussions similaires

  1. [AC-2002] comment masquer l'execution d'une macro
    Par logidev dans le forum IHM
    Réponses: 4
    Dernier message: 19/06/2009, 14h48
  2. execution d'une macro
    Par driss23 dans le forum Access
    Réponses: 2
    Dernier message: 27/04/2006, 11h57
  3. [VBA-E]Execution d'une macro access sous excel VBA
    Par virtualinsanity dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 21/04/2006, 17h27
  4. [VBA-E]Pendant l'execution d'une macro
    Par benoue dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/03/2006, 18h28
  5. execution d'une macro d'access sous delphi
    Par galendor_d'ambre dans le forum Bases de données
    Réponses: 6
    Dernier message: 10/02/2004, 15h58

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