Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2322 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lenteur de code

 

Sujet(s) à lire :
    - Visual C++
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lenteur de code

n°719156
blego
Posté le 07-05-2004 à 20:02:28  profilanswer
 

Bonjour, J'ai un gros problème
En effet mon code ci-après est très lent car il doit manipuler des données sur deux feuilles  sur environ 35 000 lignes et c'est là que ça coince. Mon code met au moins 30min pour s'exécuter.
Merci d'avance pour votre aide
Lire le code en question :
Sub MAJ_Saisie()
    Dim Z, M, DerLi, Loqp As Double
    DerLi = Sheets("OF" ).Cells.Find("*", , , , xlByRows, xlPrevious).Row
        With Sheets("Saisie Sacherie" )
        Loqp = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
            For Z = 3 To Loqp
                For M = 3 To DerLi
                     If .Range("C" & Z).Value = Sheets("OF" ).Range("B" & M).Value Then
                        .Range("F" & Z).Value = Sheets("OF" ).Range("C" & M).Value
                        .Range("G" & Z).Value = Sheets("OF" ).Range("L" & M).Value
                        .Range("H" & Z).Value = IIf(Sheets("OF" ).Range("I" & M).Value = 0, _
                         Sheets("OF" ).Range("E" & M).Value, _
                           Sheets("OF" ).Range("E" & M).Value & "+ (2 x" & Sheets("OF" ).Range("I" & M).Value & " )" )
                        .Range("I" & Z).Value = Sheets("OF" ).Range("F" & M).Value
                        .Range("J" & Z).Value = Sheets("OF" ).Range("O" & M).Value * .Range("d" & Z).Value
                        .Range("K" & Z).Value = .Range("e" & Z).Value - .Range("J" & Z).Value
                        .Range("L" & Z).Value = IIf(IsNull(.Range("D" & Z).Value) Or Empty, Sheets("OF" ).Range("M" & M).Value, _
                          Sheets("OF" ).Range("M" & M).Value * .Range("D" & Z).Value)
                        .Range("M" & Z).Value = IIf(IsNull(.Range("D" & Z).Value) Or Empty, Sheets("OF" ).Range("N" & M).Value, _
                          Sheets("OF" ).Range("N" & M).Value * .Range("D" & Z).Value)
                    End If
                Next M :??:  :??:  
            Next Z
        End With
End Sub

mood
Publicité
Posté le 07-05-2004 à 20:02:28  profilanswer
 

n°719409
alien_nan
Posté le 08-05-2004 à 13:03:49  profilanswer
 

blego a écrit :

Bonjour, J'ai un gros problème
En effet mon code ci-après est très lent car il doit manipuler des données sur deux feuilles  sur environ 35 000 lignes et c'est là que ça coince. Mon code met au moins 30min pour s'exécuter.
Merci d'avance pour votre aide
Lire le code en question :
Sub MAJ_Saisie()
    Dim Z, M, DerLi, Loqp As Double
    DerLi = Sheets("OF" ).Cells.Find("*", , , , xlByRows, xlPrevious).Row
        With Sheets("Saisie Sacherie" )
        Loqp = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
            For Z = 3 To Loqp
                For M = 3 To DerLi
                     If .Range("C" & Z).Value = Sheets("OF" ).Range("B" & M).Value Then
                        .Range("F" & Z).Value = Sheets("OF" ).Range("C" & M).Value
                        .Range("G" & Z).Value = Sheets("OF" ).Range("L" & M).Value
                        .Range("H" & Z).Value = IIf(Sheets("OF" ).Range("I" & M).Value = 0, _
                         Sheets("OF" ).Range("E" & M).Value, _
                           Sheets("OF" ).Range("E" & M).Value & "+ (2 x" & Sheets("OF" ).Range("I" & M).Value & " )" )
                        .Range("I" & Z).Value = Sheets("OF" ).Range("F" & M).Value
                        .Range("J" & Z).Value = Sheets("OF" ).Range("O" & M).Value * .Range("d" & Z).Value
                        .Range("K" & Z).Value = .Range("e" & Z).Value - .Range("J" & Z).Value
                        .Range("L" & Z).Value = IIf(IsNull(.Range("D" & Z).Value) Or Empty, Sheets("OF" ).Range("M" & M).Value, _
                          Sheets("OF" ).Range("M" & M).Value * .Range("D" & Z).Value)
                        .Range("M" & Z).Value = IIf(IsNull(.Range("D" & Z).Value) Or Empty, Sheets("OF" ).Range("N" & M).Value, _
                          Sheets("OF" ).Range("N" & M).Value * .Range("D" & Z).Value)
                    End If
                Next M :??:  :??:  
            Next Z
        End With
End Sub


 
 
Tu ne peux pas l'ecrire directement ds tes feuilles excel ?

n°719521
blego
Posté le 08-05-2004 à 16:40:35  profilanswer
 

Bien sûr je l'ai écrit dans un module.
a ton avis que devrais-je faire?
merci tout de même pour ta réaction


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lenteur de code

 

Sujets relatifs
Demande d'aide sur le code global de mon site (html, js, frames,...)Code source d'un casse brique !
[Java] Retrouver le code java a partir des .class ?interpreter du code php contenu dans une base mysql
comment ajouter le bouton parcourir a ce code?D6 perso : plus d'explorateur de code !!
question sur le commentaire de codepb d'insertion fichier php dans code js
Aide code java.debugage d'un code source php
Plus de sujets relatifs à : Lenteur de code


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)