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(simplifier) cette procédure


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
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut Comment accélérer(simplifier) cette procédure
    Bonjour à tous.

    Bon voilà j'ai fait une procédure qui fonctionne très bien lorsque j'ai quelques ligne dans un fichier excel. Malheureusement je ne suis pas un bon codeur donc quand j'utilise ma procédure sur un document qui contient 10 000 ligne j'en ai pour la nuit...

    Donc j'aimerais savoir si vous voyez un moyen de simplifier(améliorer, accélérer...), le code suivant:
    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
     
    For numRow = 2 To LastRow
        Do Until Range("M" & CStr(numRow)) < Range("H" & CStr(numRow)) Or ageMa < 0
            ageMa = Sheets("requete").Range("L" & CStr(numRow))
            ageMa = ageMa - 10
            Range("L" & CStr(numRow)) = ageMa
        Loop
        ageMa = ageMa + 10
        If ageMa < 0 Then GoTo finloop
        Do While Range("M" & CStr(numRow)) > Range("H" & CStr(numRow))
            ageMa = ageMa - 1
            Range("L" & CStr(numRow)) = ageMa
        Loop
    finloop:
    Next numRow
    Pour vous mettre un peu dans le context, dans la colonne M de mon fichier excel j'ai une formule du genre =(EXP(L11520/$P$1)-1)*I11520

    Dans la colonne L j'ai une valeur obtenue par un calcul et je doit diminuer cette valeur jusqu'à ce que le résultat de la formule de la colonne M soit plus petit qu'une valeur cible (dans la colone H).

    Pour résumer les choses:
    1. Calcule ageMa (colonne L)
    2. Calcule agePb (a partir de ageMa)(colonne M)
    3. Si agePB > que Valeur de référence(colonne H), enleve 10 de ageMa
    3.5. retour étape 2
    4 Rajoute 10 a ageMa(colonneL)
    5. Calcule agePb (a partir de ageMa)(colonne M)
    6. Si agePB > que Valeur de référence(colonne H), enleve 1 de ageMa
    6.5. retour à l'étape 5


    Pour l'instant les calculs sont directement dans le fichier excel, est ce que ce serait plus rapide si je fesais les calcules dans VB?

    Voilà, j'espère que c'est claire.
    Merci et bonne journée :0)

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Plusieurs pistes :

    - Les calculs seront toujours plus rapides en VBA que dans Excel

    - Est-ce long à cause de la guirlande lumineuse ? Si c'est le cas, ajoute Application.ScreenUpdating = False au début de ton code et = True à la fin

    - Jouer sur Application.Calculation =xlCalculationManual à mettre au début de ton code et Application.Calculation = xlCalculationAutomatic à la fin. Avec cela, ça devrait être NETTEMENT plus rapide.

    Bref, rajoute les 2 derniers points au début et à la fin de ton code. Regarde ce que ça donne. Si ce n'est toujours pas ça, il faudra alors envisager un recodage.

    Bonne chance !

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

Discussions similaires

  1. [ADO.Net][C#] Comment combiner IDbCommand et procédures stockées ?
    Par Invité dans le forum Accès aux données
    Réponses: 7
    Dernier message: 19/08/2011, 17h44
  2. Comment faire une boucle avec cette procédure
    Par soffy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/06/2007, 23h28
  3. Comment faire une fonction - procédure
    Par Madmac dans le forum C
    Réponses: 14
    Dernier message: 12/08/2006, 10h57
  4. [BATCH] Comment se simplifier la vie?
    Par LoLoLem dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 29/03/2006, 14h57
  5. [IB 6.0] Comment accélérer l'accès a la BD ?
    Par mafuku dans le forum InterBase
    Réponses: 2
    Dernier message: 20/12/2005, 11h48

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