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 :

Lenteur de traitement inattendue [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 22
    Par défaut Lenteur de traitement inattendue
    Bonjour,

    En exécutant une de mes macros en mode pas-à-pas j'ai pu trouver qu'une instruction de "révélation de ligne" (masquer <> révéler) prenait énormément de temps.

    Là ou ça devient vraiment étrange, c'est que j'ai exactement la même instruction pour le même nombre de lignes sur une autre feuille mais là le traitement se fait en quelques millisecondes !

    Ci-dessous le bout de code qui pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("MaFeuille").Columns(1).Cells.EntireRow.Hidden = False
    Et le bout de code identique mais dont le traitement est beaucoup plus rapide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("MonAutreFeuille").Columns(1).Cells.EntireRow.Hidden = False
    A titre de comparaison, la première instruction prend 6,16 s pour s’exécuter alors que la seconde ne prend que 7,8 ms, c'est mille fois plus rapide !

    J'ai essayé de voir si une ligne en particulier posait problème en les révélant une par une et en mesurant le temps d'exécution, et j'ai mesuré que sur "MaFeuille" la révélation de chaque ligne indépendamment des autres prenait cent fois plus de temps que sur "MonAutreFeuille".



    D'après vous, quelle peut-être la raison de ce temps anormalement long ? Si vous avez une autre solution pour révéler une ligne entière, je suis aussi ouvert à toute suggestion.

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Tu as un filtre activé sur la feuille qui présente des lenteurs?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 22
    Par défaut
    Nope, rien du tout. La seule différence entre les deux feuilles réside dans le fait qu'il y'a un peu plus de colonnes non vides sur la feuille lente (16 contre 3 sur la feuille qui fonctionne normalement) mais je ne vois pas en quoi ça pourrait occasionner un ralentissement significatif.

    J'ai trouvé un moyen de contourner le problème en copiant-collant toutes les données et références de ma feuille lente sur une nouvelle feuille et là ça fonctionne correctement.

    Mais il n'empêche que j'aimerais bien savoir d'où ça peut venir !

    D'après tout ce que j'ai testé je peux déjà dire que ça ne vient pas du format des cellules, de la protection de la feuille ou du nombre de lignes à cacher. En fait j'ai juste l'impression que cette feuille en particulier était boguée parce que sur toutes les autres ça fonctionne normalement.

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Tu as des formules présentes dans une de tes 2 feuilles ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 22
    Par défaut
    Ah alors là oui, sur celle qui rame justement. Et ce sont des formules assez balèzes du type triple SI avec OU/ET en prime. Ca peut perturber excel ? Mais même si c'est le cas ça n'explique pas pourquoi les fonctions masquer/révéler fonctionnent normalement sur une nouvelle feuille dans laquelle j'ai copié ces mêmes formules.

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Oui c'est ça qui fait ramer Dès que tu fais une opération sur des lignes, même si tu caches juste des lignes, Excel va recalculer.

    Essaye, par curiosité, 2 choses :
    - quand tu caches une lignes, normalement,d ans Excel, en bas à droite, tu as un truc où il y a écrit recalcul en cours
    - dans un 2e temps, ce que tu peux tester pour voir si ce sont effectivement les recalculs qui prennent du temps, tu désactives le recalcul automatique. Pour cela, tu vas dans options > formules, et là tu as une option recalcul automatique ou manuel => mets-le en manuel pour faire tes tests voir si ça améliore ton temps de réaction

    Si c'est effectivement ces recalculs qui prennent du temps, je te conseille de désactiver les recalculs le temps de l'exécution de tes macros, et n'oublie pas de réactiver à la fin.

    Lorsque j'ai des fichiers avec beaucoup de formules, j'utilises ces fonctions, qui me permettent de passer du mode manuel à l'auto quand je veux :

    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
    Function StopCalc()
    'fonction arret de calcul
    With Application
        .Calculation = xlManual
        .MaxChange = 0.001
    End With
    ActiveWorkbook.PrecisionAsDisplayed = False
    End Function
     
    Function StartCalc()
    'fonction de reprise des calculs
    With Application
        .Calculation = xlAutomatic
        .MaxChange = 0.001
    End With
    ActiveWorkbook.PrecisionAsDisplayed = False
    End Function
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

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

Discussions similaires

  1. [Batch] Fichier avec grand nombre de lignes et lenteur de traitement
    Par Aguire_ dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 09/05/2015, 09h10
  2. Lenteur de traitement checkbox avec IE
    Par maestro982 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 15/10/2010, 10h06
  3. [Débutant] Lenteur de traitement après utilisation de gui
    Par MrPingouin dans le forum Interfaces Graphiques
    Réponses: 18
    Dernier message: 19/06/2009, 17h44
  4. Lenteur de traitement
    Par djatto dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/10/2008, 15h03
  5. [WD11]Lenteur de traitement fichier XLS
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 2
    Dernier message: 10/09/2007, 15h27

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