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] boucle lente !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut [VBA-E] boucle lente !
    Bonjour,

    J'ai un problème de performance dans une boucle vba. Le but de ma boucle est simplement d'inscrire le numéro de la ligne dans la colonne A. la boucle va jusqu'à la ligne 40 000. Le code est simple et ne pose aucun problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub boucle()
     
    n = 0
     
    Do
     
    n = n + 1
     
    Cells(n, 1).Value = n
     
    Loop Until n = 40000
     
    End Sub
    (Ces chiffres me servent simplement à procéder au tri final de mon fichier par ordre alphanumérique lorsque toutes les manipulations ont été effectuées.)


    Ce même fichier est rempli de formules. Il est relativement lourd.

    Lorsque j'active la boucle, les numéro s'inscrivent correctement. Mais elle est anormalement lente. 20 cellules de remplies à la seconde.

    J'ai donc fait des tests :

    -- J'ai fait un copiage en valeur du fichier et j'ai activé la macro. ça fonctionne rapidement

    -- J'ai ajouté le copiage en format du fichier et ça fonctionne normalement. la macro atteint la cellule 40 000 en 2 sec.

    -- J'ai copié une colonne en formule. la macro a commencé à ralentir. j'ai finalement copié toutes les formules dans le fichier et la macro est à nouveau redevenu anormalement lente.


    Encore plus étrange :

    -- Lorsque mon fichier rempli de formules est ouvert et que je réalise cette macro de numérotation de lignes sur un autre classeur vierge, la boucle est toujours très lente.

    -- Lorsque je lance la même boucle sur un classeur vierge et que mon fichier (rempli de formules) est fermé, la boucle retrouve son rythme normal (1 à 2 sec au lieu de 20mn)

    -- J'ai déja réalisé la même macro sur une première maquette similaire à mon fichier actuel en terme de volume et du nombre de formules, je n'ai pas rencontré ce problème.

    Y a t'il parmi vous des surdoués qui pourraient identifiés la source du problème.

    Je craque.

    Merci !

    zenix

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    encore un problème d'affichage à inhiber pendant la boucle, apparemment ....
    Mega ? Bbil ? Ouskel ?

  3. #3
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Salut!
    Respire un coup, ça va aller...
    Essaie ça, et dis moi ce que ça fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlManual

  4. #4
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Heeyyy, hoo!
    5 minutes, c'est correct, comme temps de réponse!!? Ça ferait pâlir d'envie pas mal de hotline...

    "jmf", pas toi? Tu ne vas pas t'y mettre...

  5. #5
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 17
    Par défaut
    Ptain Merci Megaxel et jmfmarques !!

    Vous êtes super efficaces. ça a l'air de fonctionner.

    Je suis curieux. Pourquoi le problème ne se posait pas avant ?
    Je n'ai pourtant rien changé au niveau "calculation"

    J'imagine qu'à la fin de ma procédure, il faut que je change xlmanual? quel est le mode à remettre?

    encore une fois merci. dire que ça fait des heures que j'étais dessus. c ma première fois ici. bin je repasserai plus souvent


    Merci

  6. #6
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Pour les différents mode, fais comme moi: ne les apprend surtout pas par coeur, et fais un enregistrement de macro quand tu en as besoin...
    Et n'oublie pas, en repassant sur ce site, de répondre aux problèmes posés par les autres.
    Ni de cliquer sur le bouton

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

Discussions similaires

  1. [VBA-E]boucle
    Par janus82 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/04/2006, 18h08
  2. [VBA-E]exécution lente de la macro après aperçu
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2006, 17h49
  3. [VBA-E]Boucle mise a jour label
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/03/2006, 14h32
  4. [VBA-E]Boucle pour addition?
    Par LouBoulpi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/02/2006, 20h50
  5. [VBA-E] Boucle while!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/12/2005, 19h26

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