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 :

Procédures VBA Excel et performances


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
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut Procédures VBA Excel et performances
    Bonjour à tous,


    Je souhaite avec un retour de votre part concernant les performances de VBA dans Excel.

    J'ai créé un ensemble de procédures qui remplissent efficacement leur travail mais cela ne semble pas très performant.

    Certes mes procédures ont un algorithme certainement peu optimisé mais le nombre d'opérations me semble dérisoire comparé au tant que cela prend.
    La complexité est de n^3 où n<50. Etant en phase de test, le nombre d'itération est environ de 1000. Ayant fait un peu de java / C / PHP, cela me semble un nombre insignifiant et pourtant cela mais près de 10 secondes à se compléter. Je me dis en 50^3, il faudra poiroter 20min...

    Est-ce normal ? Y a-t-il quelque chose qui m'échappe? Y a-t-il une étape genre compilation de code qui me permettrait d'optimiser tout ça ?


    Merci d'avance.
    Cdt,
    Gryon

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

    Et que répondre à ta question sans connaitre ton code, sans avoir s'il a été optimisé ?

    Désactives-tu le rafraîchissement ?
    Désactives-tu le calcul automatique ?
    Utilises-tu des variables tableaux plutôt que de travailler directement dans les cellules ?
    ....

    Les réponses seront nombreuses et incomplètes sans exemples de code.


    C'est comme si tu dis au garagiste que ta voiture tourne au ralenti au téléphone sans lui montrer.

    Philippe

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, de toute façon s'il s'agit de calcul scientifique tu n'obtiendras jamais avec Excel ce que tu aurais comme performances avec un compilateur C/Delphi via un exe. Peut-être penser à déporter ce calcul dans une Dll ?

  4. #4
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut
    Merci pour vos retours.


    Philippe, concernant tes questions :
    - Je n'ai pas désactivé le rafraîchissement ni le calcul automatique
    - Je ne passe pas par des variables tableaux
    C'est une bonne piste ça ? J'ai toutefois des formules de calcul à rafraîchir mais j'imagine que je peux déclencher les calculs à rafraichir au moment opportun. Un Workbook.RefreshAll ferait il l'affaire ?

    kiki29, ce sont de simples calculs financiers: quelques comparaisons, pas mal de IF, des additions, multiplications...

    Le résultat doit être quelques chose de simple à exploiter

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Et que répondre à ta question sans connaitre ton code
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    j'imagine que je peux déclencher les calculs à rafraichir au moment opportun. Un Workbook.RefreshAll ferait il l'affaire ?
    Sur excel c'est plutôt .calculate
    Que tu peux restreindre à une feuille, voire même à une plage.

    Au début :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    A la fin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation = xlCalculationAutomatic
    Tu auras déjà un progrès.
    Ce qui est très lent c'est la lecture et l'écriture sur les feuilles. D'où l'intérêt de lire et écrire en un bloc avec une variable tableau.
    eric

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 22
    Par défaut
    Hello Eric,

    Merci pour cette suggestion.
    Cela résout mon problème: les calculs sont maintenant instantanés!

    Merci !
    Gryon

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

Discussions similaires

  1. [XL-2003] Plantages procédures VBA suite à réinstallation Excel
    Par micbail dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2011, 11h30
  2. Appel d'une procédure Outlook depuis VBA excel
    Par sergiani dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 16h29
  3. [Toutes versions] Problème de procédure (VBA / Excel)
    Par dreamerforever dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/06/2010, 11h18
  4. [VBA excel] sécurité : empêcher le lancement de procédure
    Par gatsu07 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/08/2006, 10h53
  5. [VBA][Excel] Lancer procédure
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 28/07/2006, 10h13

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