Bonjour,
Je suis novice en VBA et j'aimerai accélérer une macro excel.
La macro effectue une recherche dans une feuille nommée "DATA_INPUT" et renvoi une information dans une feuille nommée "ANALYSIS". Je me demandais comment on pouvait accélérer la macro suivante:
Comme je ne veux pas supprimer les valeurs de la feuille data_input, j'avais penser à copier tout d'abord les valeurs dans une autre feuille ex: data_input2 et de supprimer au fur et à mesure les lignes dans data_input mais je ne sais pas si cela vaut le coup en terme de temps d’exécution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub Extrait_Valeurs_lignes() Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim ligne, i As Long Dim niv_prod_label As String Dim flag_trouve As Range Dim FeuilleData, FeuilleAnalysis As Worksheet Set FeuilleData = ActiveWorkbook.Worksheets("DATA_INPUT") Set FeuilleAnalysis = ActiveWorkbook.Worksheets("ANALYSIS") ligne = 1 Dim v As Long Set DeletePlage = FeuilleData.Cells.Find("5 - VALEUR MOYENNE ENTRE 0 ET T", LookAt:=xlWhole, MatchCase:=True) For v = 1 To DeletePlage.Row - 1 FeuilleData.Cells(v).EntireRow.Delete Next Do Until (FeuilleAnalysis.Cells(ligne, 2).Value = "END" Or ligne = 40000) niv_prod_label = FeuilleAnalysis.Cells(ligne, 2).Value If niv_prod_label = "" Then GoTo lignesuivante End If Set flag_trouve = FeuilleData.Cells.Find(FeuilleAnalysis.Cells(ligne, 2).Value, LookAt:=xlWhole, MatchCase:=True) If flag_trouve Is Nothing Then MsgBox "Niveau " & niv_prod_label & " non trouvé dans DATA_INPUT !!" FeuilleAnalysis.Cells(ligne, 3).Value = Null GoTo lignesuivante End If FeuilleAnalysis.Cells(ligne, 3).Value = FeuilleData.Cells(flag_trouve.Row, 3).Value lignesuivante: ligne = ligne + 1 Loop Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True MsgBox "Terminé" End Sub
Merci d'avance pour vos conseils.
Partager