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]temps d execution trop lent


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Par défaut [VBA-E]temps d execution trop lent
    Salut a tous,

    Voici un code visual basic, il fonctionne parfaitement mais il est tres lent, au moins 20 secondes . J utilise certainement des commandes trop lourdes.
    Une idee? :


    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    Private Sub CommandButton2_Click()
      Dim y As Integer
      Dim l As Integer
      Dim l2 As Integer
      Dim c2 As Integer
      Dim x As Integer
      Dim o As Integer
      o = 0
      Dim departcol As Integer
      Dim departlig As Integer
      jj = ListBox2.ListCount
      If jj <> 0 Then
        For i = 2 To 100
          For y = 1 To 18
            Sheets("analyse").Cells(i, y) = Null
          Next y
        Next i
        ' un peu de menage avant de mettre les donnees
        x = Sheets("gegevens").Cells(2112, 136)
        l = 1
        For i = 2 To x
          If Sheets("gegevens").Cells(i, 137) = 1 Then
            l = l + 1
            For y = 1 To 18
              Sheets("analyse").Cells(l, y) = Sheets("gegevens").Cells(i, y)
            Next y
          End If
        Next i
        For i = 2 To x
          Sheets("gegevens").Cells(i, 137) = Null
        Next i
        ' remettre les compteurs 0
        Sheets("analyse").Activate
        julien = c
        Unload UserForm2
        Sheets("code").Cells(27, 1) = x96
        Sheets("code").Cells(28, 1) = x06
        Sheets("code").Cells(29, 1) = l - 1
        departcol = 1
        departlig = 11
        For departlig = 11 To 500
          For departcol = 2 To 15 Step 2
            Sheets("tabel").Cells(departlig, departcol) = ""
          Next departcol
        Next departlig
        For i = 11 To 50
          Sheets("tabel").Cells(i, 1) = ""
        Next i
        departcol = 1
        departlig = 11
        For g = 0 To l
          Sheets("tabel").Cells(departlig, departcol) = Sheets("analyse").Cells(g + 2, 18)
          Sheets("tabel").Cells(departlig, departcol + 1) = Sheets("analyse").Cells(g + 2, 6)
          Sheets("tabel").Cells(departlig, departcol + 3) = Sheets("analyse").Cells(g + 2, 8)
          Sheets("tabel").Cells(departlig, departcol + 5) = Sheets("analyse").Cells(g + 2, 11)
          Sheets("tabel").Cells(departlig, departcol + 7) = Sheets("analyse").Cells(g + 2, 13)
          departlig = departlig + 1
        Next g
        o = l - 1 + 11
        Sheets("tabel").Cells(11 + l, departcol) = "Maximum tussen de " & l - 1 & " bladen"
        Sheets("tabel").Cells(11 + l, departcol + 1) = "=max(b11:b" & o & ")"
        Sheets("tabel").Cells(11 + l, departcol + 3) = "=max(d11:d" & o & ")"
        Sheets("tabel").Cells(11 + l, departcol + 5) = "=max(f11:f" & o & ")"
        Sheets("tabel").Cells(11 + l, departcol + 7) = "=max(h11:h" & o & ")"
        Sheets("tabel").Cells(11 + l + 1, departcol) = "Minimum tussen de " & l - 1 & " bladen"
        Sheets("tabel").Cells(11 + l + 1, departcol + 1) = "=min(b11:b" & o & ")"
        Sheets("tabel").Cells(11 + l + 1, departcol + 3) = "=min(d11:d" & o & ")"
        Sheets("tabel").Cells(11 + l + 1, departcol + 5) = "=min(f11:f" & o & ")"
        Sheets("tabel").Cells(11 + l + 1, departcol + 7) = "=min(h11:h" & o & ")"
        Sheets("tabel").Cells(11 + l + 2, departcol) = "Gemiddelde tussen de " & l - 1 & " bladen"
        Sheets("tabel").Cells(11 + l + 2, departcol + 1) = "=GEMIDDELDE(b11:b" & o & ")"
        Sheets("tabel").Cells(11 + l + 2, departcol + 3) = "=GEMIDDELDE(d11:d" & o & ")"
        Sheets("tabel").Cells(11 + l + 2, departcol + 5) = "=GEMIDDELDE(f11:f" & o & ")"
        Sheets("tabel").Cells(11 + l + 2, departcol + 7) = "=GEMIDDELDE(h11:h" & o & ")"
        Sheets("tabel").Select
      Else
        MsgBox ("U moet tenminste een blad kiezen!")
      End If
    End Sub
    Voila et tant que j y pense encore un autre probleme;
    pour cette ligne de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("tabel").Cells(11 + l + 2, departcol + 7) = "=GEMIDDELDE(h11:h" & o & ")"
    A chaque fois excel affiche #valeur
    mais des que je clique sur enter la bonne valeur arrive
    c est assez embettant.

    Indentations grâcieusement offertes par AlainTech

  2. #2
    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
    Bonjour et bienvenue sur ce forum.

    Veux-tu bien utiliser les balises code dans ton message précédent (édite-le) et supprimer les lignes inutiles.

    Merci
    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!

  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
    Pour la question subsidiaire:
    GEMIDDELDE, c'est de l'allemand? Ton poste, il est en quelle langue?
    Il faudrait que tu trouves le nom de la fonction équivalente sur ton poste.

  4. #4
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Par défaut
    desole .

    c est du neerlandais c est la fonction moyenne

    desole pour les accents mais je suis sur un clavier querty et je suis pas trop habitue.

  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
    Remplace GEMIDDELDE par AVERAGE
    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 éclairé
    Inscrit en
    Mars 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 72
    Par défaut


    Merci c est vraiment genial!!!!!


    ca fonctione.

    Mais pour mon code c est vraiment grave, je viens de le lancer pour voir si le probleme avec la moyenne etait regle et j ai selectionne 250 enregistrement et il a fallu au moins 45 secondes!

  7. #7
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     x = Sheets("gegevens").Cells(2112, 136)
        l = 1
        For i = 2 To x
          If Sheets("gegevens").Cells(i, 137) = 1 Then
            l = l + 1
            For y = 1 To 18
              Sheets("analyse").Cells(l, y) = Sheets("gegevens").Cells(i, y)
            Next y
          End If
        Next i
        For i = 2 To x
          Sheets("gegevens").Cells(i, 137) = Null
        Next i
    Ça fait beaucoup de tours de boucles! J'en suis toute étourdie.
    Y'aurais pas moyen d'utiliser les fonctions de recherche d'Excel? RechercheV par exemple?

  8. #8
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    tu fais une recherche sur le forum avec l'outil approprié Recherche avancée sur le forum - mot clé : lenteur

    Tu devrais trouver un thread au doux nom de [VB] avec Excel : calculs vraiment lent

    La prochaine fois fait l'effort de rechercher par toi-même avant de poser une question

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

Discussions similaires

  1. Temps d'execution trop lent : hive=> neo4j
    Par lobna20 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 03/03/2015, 11h38
  2. VBA temps d'exécution trop lent
    Par Jsainv dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 20/05/2013, 18h37
  3. [AC-2003] Temps d'execution trop lent - Recordset DAO
    Par casavba dans le forum VBA Access
    Réponses: 14
    Dernier message: 15/10/2012, 21h31
  4. Temps d'execution trop long !
    Par taisherg dans le forum Access
    Réponses: 14
    Dernier message: 15/06/2007, 13h22
  5. [VBA-E] Temps d'execution de requetes SQL tres long
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/03/2006, 10h25

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