Lenteur de code - VB/VBA/VBS - Programmation
Marsh Posté le 08-05-2004 à 13:03:49
blego a écrit : Bonjour, J'ai un gros problème |
Tu ne peux pas l'ecrire directement ds tes feuilles excel ?
Marsh Posté le 08-05-2004 à 16:40:35
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
Marsh Posté le 07-05-2004 à 20:02:28
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