Un code trop lent à s'exécuter
Bonjour, le forum!
Le code ci-dessous fonctionne, mais prend trop de temps à s'exécuter. Y a-t-il un moyen de réduire le temps d'exécution de cette macro? Comment?
Merci par avance
Code:
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
| Private Sub CmdValider_Click()
Dim choix As String
choix = vbYes
If MsgBox("Voulez-vous enregistrer cette opération?", vbQuestion + vbYesNo, "Confirmation") = vbYes Then
Dim derligne As Integer
Dim WS As Worksheet
Dim ligne As Integer
Set WS = Sheets("Journaux")
derligne = WS.Range("B5000").End(xlUp).Row
If WS.Range("B5").Value = "" Then
derligne = WS.Range("B5000").End(xlUp).Row
Else
derligne = WS.Range("B5000").End(xlUp).Row + 1
End If
For ligne = 19 To 40
If Cells(ligne, 3).Value <> "" Then
WS.Range("B" & derligne).Value = Range("G15").Value
WS.Range("C" & derligne).Value = Range("G13").Value
WS.Range("D" & derligne).Value = Range("D13").Value
WS.Range("E" & derligne).Value = Cells(ligne, 3).Value
WS.Range("F" & derligne).Value = Cells(ligne, 4).Value
WS.Range("G" & derligne).Value = Cells(ligne, 5).Value
WS.Range("H" & derligne).Value = Cells(ligne, 6).Value
WS.Range("I" & derligne).Value = Range("D15").Value
WS.Range("J" & derligne).Value = Cells(ligne, 7).Value
WS.Range("K" & derligne).Value = Cells(ligne, 8).Value
derligne = derligne + 1
End If
Next
Range("G15").Value = Range("G15").Value + 1
Range("G15").Value = ""
Range("G13").Value = ""
Range("D13").Value = ""
Range("D15").Value = ""
Range("E19").Value = ""
Range("E20").Value = ""
Range("E21").Value = ""
Range("E22").Value = ""
Range("F19").Value = ""
Range("F20").Value = ""
Range("F21").Value = ""
Range("F22").Value = ""
Range("G19").Value = ""
Range("G20").Value = ""
Range("G21").Value = ""
Range("G22").Value = ""
Range("H19").Value = ""
Range("H20").Value = ""
Range("H21").Value = ""
Range("H22").Value = ""
Sheets("Saisie").Range("C19:C40").ClearContents
Sheets("Saisie").Range("E19:E40").ClearContents
Sheets("Saisie").Range("F19:F40").ClearContents
Sheets("Saisie").Range("G19:G40").ClearContents
Sheets("Saisie").Range("H19:H40").ClearContents
End If
End Sub |