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 du programme


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut Lenteur du programme
    Bonjour à tous,

    J'ai code qui écris sur mon tableur qui fonctionne bien "pour moi"!. Mais lorsque je l'installe sur un autre ordi moins performent, il fonctionne très lentement.
    Pourriez-vous me dire si c'est la façon dont je l'ais écris qui n'est pas bonne?

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    Sheets(ComboBox4.Text).Select
        Dim Der_ligne As Integer
            Der_ligne = Range("A65536").End(xlUp).Row + 1
     
        ActiveCell.Offset(1, 0).Select
        Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
            For i = 1 To 9
                ActiveCell.Offset(0, 1).Select
                Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
     
            Next i
     
       Cells(Der_ligne, 1) = Label50 + TextBox1
         'ActiveCell.(ActiveCell.Row, 0) = Label50 + TextBox1
        'TextBox2.Value = jj
     
        Cells(Der_ligne, 2) = TextBox18 'N° chéque
     
        Cells(Der_ligne, 3) = Date$
        mydate = TextBox2.Value
        mystr = Format(mydate, "dd/mm/yy")
        Cells(Der_ligne, 3) = DateValue(mystr) ' Date du chèque"
        Cells(Der_ligne, 4) = ComboBox4 ' N° chèque
        Cells(Der_ligne, 5) = ComboBox3.Value 'analytique
        Cells(Der_ligne, 6) = ComboBox2.Value 'tiers
        Cells(Der_ligne, 7) = ComboBox5.Value 'libellé
        Cells(Der_ligne, 8) = TextBox11.Value 'Qté
        Cells(Der_ligne, 9) = ComboBox1.Value 'N° de cpte
     
     
        If TextBox5.Value <= "0" Then GoTo fin3
        Cells(Der_ligne, 10) = "0.00"
        Selection.HorizontalAlignment = xlRight
         Cells(Der_ligne, 10) = Val(TextBox5.Value) ' Montant du Débit
        Cells(Der_ligne, 11) = "D" ' sens opération
     
     
        GoTo fin6
    fin3:
        If TextBox6.Value <= "0" Then GoTo fin4
        Cells(Der_ligne, 10) = "0.00"
        Selection.HorizontalAlignment = xlRight
         Cells(Der_ligne, 10) = Val(TextBox6.Value) ' Montant du crédit
        Cells(Der_ligne, 11) = "C" ' sens opération
        GoTo fin6
    fin4:
     
    fin6:
        Cells(Der_ligne, 12) = Val(TextBox12.Value) ' Montant du crédit
        Selection.NumberFormat = "0"
        Selection.HorizontalAlignment = xlRight
         Cells(Der_ligne, 13) = TextBox14.Value 'code banque (udogec)
         Cells(Der_ligne, 14) = TextBox15.Value 'code Analytique (udogec)
    merci de votre réponse!
    jiji

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut jijie et le forum
    D'abord, un code doit être complêt si tu veux espérer qu'on puisse y faire quelque chose!

    Tu utilises ActiveCell, Select, etc. ralentisseurs inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To 9
         ActiveCell.Offset(0, 1).Select
         Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
     Next i
    ??? ça sert à quoi ? Ce ne serait pas plutôt "ActiveCell.Offset(0, i).Select" ? ou mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(ActiveCell.Offset(0, 1),ActiveCell.Offset(0, 9)).BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
    TextBox5 est remplie avec le montant positif (je suppose ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TextBox5.Value <= "0" Then GoTo fin3
    pourquoi utiliser des chiffres/lettres et pas des nombres ?
    Pourquoi faire des sauts (GOTO) absolument inutiles, vu que dans les deux cas, tests TextBox5 ou TextBox6 tu n'utilisex que la partie réservée au vrai...

    Un code qui fonctionne est forcément "bien" écrit.
    L'algorythme, lui, laisse à désirer.
    On peut optimiser un code complet (pas un extrait), en élagant les "bouffeurs de temps" que sont les activate, select et autres...
    On peut "organiser" le code en déclarant toutes les variables et en regroupant ces déclarations au début de la macro.

    Quand on pose une question sur une optimisation, il serait souhaitable d'expliquer le but de la macro, ce qu'elle est supposée faire, etc...
    Même si c'est évident pour toi, les autres doivent deviner (avec le risque d'avoir mal extrapolé) et de donner la macro en intégralité.
    A+

Discussions similaires

  1. [WD16] Lenteur requête par programmation
    Par WDKyle dans le forum WinDev
    Réponses: 7
    Dernier message: 11/09/2013, 17h18
  2. [WD16] Applidis - Lenteur/Blocage du programme au lancement
    Par Tancredi dans le forum WinDev
    Réponses: 7
    Dernier message: 02/12/2012, 20h56
  3. [Free Pascal] [2.4.2] Lenteurs pour exécuter un programme
    Par ima_med dans le forum Free Pascal
    Réponses: 0
    Dernier message: 02/02/2011, 21h41
  4. Lenteur du programme puis plantage
    Par bourgui78 dans le forum Général Python
    Réponses: 62
    Dernier message: 13/10/2008, 13h45
  5. Lenteur d'exécution et bug programme
    Par matt67 dans le forum MATLAB
    Réponses: 3
    Dernier message: 06/06/2007, 16h01

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