Bonjours à toutes et tous.
J'ai créé un programme qui me permet d'effacer les lignes que je n'utilise pas. Après avoir réussi à créer ce programme je me suis aperçu qu'il mettait plusieurs heures à s'exécuter (le fichier fait 110 000 lignes) . Suite à quelques recherches j'ai trouvé plusieurs astuces pour optimiser celui-ci dont l'utilisation de la fonction Array mais je n'arrive pas à l'adapter à mon code. Est ce que quelqu'un pourrait m'aider s'il vous plaît ?
Le code complet est :
Sub delete()
Dim line As Long
Dim x As Long
Dim difference As Long
Dim datarange As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.DisplayStatusBar = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'Read all datas in the table
line = Range("A" & Rows.Count).End(xlUp).Row
datarange = ActiveSheet.Range("A2:A" & line).Value
'Delete rows that I won't use in the table
For x = 2 To line
If Cells(x + 1, 1) - Cells(x, 1) < 694 Then
datarange.Rows(x + 1).Delete
Else
x = x + 1
End If
x = x - 1
Next x
'Transcribe all datas in the Excel sheet
Range("A2:A" & line).Value = datarange
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.AskToUpdateLinks = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub
J'ai créé un programme qui me permet d'effacer les lignes que je n'utilise pas. Après avoir réussi à créer ce programme je me suis aperçu qu'il mettait plusieurs heures à s'exécuter (le fichier fait 110 000 lignes) . Suite à quelques recherches j'ai trouvé plusieurs astuces pour optimiser celui-ci dont l'utilisation de la fonction Array mais je n'arrive pas à l'adapter à mon code. Est ce que quelqu'un pourrait m'aider s'il vous plaît ?
Le code complet est :
Sub delete()
Dim line As Long
Dim x As Long
Dim difference As Long
Dim datarange As Variant
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.DisplayStatusBar = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
'Read all datas in the table
line = Range("A" & Rows.Count).End(xlUp).Row
datarange = ActiveSheet.Range("A2:A" & line).Value
'Delete rows that I won't use in the table
For x = 2 To line
If Cells(x + 1, 1) - Cells(x, 1) < 694 Then
datarange.Rows(x + 1).Delete
Else
x = x + 1
End If
x = x - 1
Next x
'Transcribe all datas in the Excel sheet
Range("A2:A" & line).Value = datarange
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.AskToUpdateLinks = True
Application.DisplayStatusBar = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub