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
|