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 une procédure sub. [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut Alléger une procédure sub.
    Bonjour à tous,

    J'ai besoin d'un conseil concernant l'allégement d'une procédure sub.



    Voici le code. Comme vous pouvez le voir la procédure consiste à définir une plage de cellule, cette plage de cellule va ensuite être réutilisée dans une fonction fnM2 qui consiste en calcul à l'aide du solveur, pour finalement réutiliser le résultat de la fonction à la fin de ma sub. Le seul problème est que je possède plus de 1000 plages à entrer successivement, vous imaginez donc à quel point la procédure est longue lorsqu'il s'agit de lancer 1000 fois le solveur. EN gros j'ai le temps d'aller me chercher un café...

    Auriez vous une idée pour alléger le temps de "calcul" ?

    Merci d'avance, cordialement.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Par défaut
    Salut locosr,

    Il existe une astuce, qui permet d'accélérer le processus. Au début de ta procédure tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    et à la fin de la procédure :

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

  3. #3
    Membre éprouvé
    Homme Profil pro
    Consultant comptable
    Inscrit en
    Mai 2011
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant comptable

    Informations forums :
    Inscription : Mai 2011
    Messages : 137
    Par défaut
    tu peux aussi arreter le calcul automatique ca le soucis c'est qu'excel recalcule pour toute la feuille à chaque fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationManual
    et à la fin de ton code

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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 45
    Par défaut
    Merci pour vos réponses

    Pour Touffe54, effectivement ça permet de rogner quelque milisecondes à chaque procédure, mais dans l'absolue ça ne résout pas vraiment le problème. Pour Amnorian, j'ai testé ta procédure, et malheureusement je n'ai pas vu de gain de temps :/

    En fait je me demandais s'il n'existait pas un code plus astucieux que le miens évitant de passer par les 1000 calculs de solver, mais auquel je n'aurais pas pensé. Comme je vous l'ai dit je dimensionne une plage de cellule (longue de 36 lignes), sur ma première page. La plage est ensuite envoyée dans ma fonction qui va me faire un calcul de solveur, enfin le resultat du solveur est reporté sur une autre page. Sachant que ma plage de cellule va ensuite descendre d'une ligne pour proposer une nouvelle plage de cellule et ainsi de suite. En gros il y aura environ 75 plages de cellules calculées par pages, et il existe une 15 ene de page, bref c'est très long.

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

Discussions similaires

  1. [AC-2000] Exécuter une procédure Sub avec une macro
    Par woant dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/06/2009, 12h22
  2. changer un argument dans une procédure Sub
    Par mancired dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/05/2009, 15h20
  3. [XL-2003] Sortir d'une procédure sub au bout d'un certain temps
    Par mancired dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2009, 18h45
  4. Réponses: 14
    Dernier message: 14/01/2009, 15h59
  5. Réponses: 4
    Dernier message: 28/08/2006, 13h04

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