Bonjour,
J'ai une macro VBA qui défille 9255 ligne et, elle est très lente (3"45 d'exécution) en fin bref. Cette macro sert à transférer les data d'une visseuse connectée et de les organiser
Ps : excuser l'orthographe dans le code
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 Sub Btn_Refresh() '''''''''''''Déclaration d'objet ''''''''''''''' Dim BoEcran As Boolean, BoBarre As Boolean, BoEvent As Boolean, BoSaut As Boolean Dim iCalcul As Integer Dim Ligne As Integer Dim LigneRes As Integer Dim LigneTab As Integer 'Conservation de la configuration existante BoEcran = Application.ScreenUpdating BoBarre = Application.DisplayStatusBar iCalcul = Application.Calculation BoEvent = Application.EnableEvents BoSaut = ActiveSheet.DisplayPageBreaks ' Force la configuration Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False '''''''''''''Debut du Code''''''''''''' Ligne = 8 LigneRes = 2 LigneTab = 8 'Vidange de Tableau du PF While Feuil2.Range("x" & Ligne) <> "" Ligne = Ligne + 1 Wend Feuil2.Range("A8:Y" & Ligne).Value = "" 'Reset Compteur Ligne = 2 'boucle pour défiler While Feuil1.Range("a" & LigneRes) <> "" 'Copie de résultat du pf dans tableau du PF 'Récupération des data de Résultat du PF 'info dim Feuil2.Range("o" & LigneTab).Value = Feuil1.Range("T" & LigneRes).Value 'Code Barre Feuil2.Range("M" & LigneTab).Value = Feuil1.Range("R" & LigneRes).Value 'Etape FI Feuil2.Range("D" & LigneTab).Value = Right(Feuil2.Range("M" & LigneTab).Value, 7) 'Statut tous Feuil2.Range("E" & LigneTab).Value = Feuil1.Range("A" & LigneRes).Value 'Statut Couple Feuil2.Range("F" & LigneTab).Value = Feuil1.Range("B" & LigneRes).Value 'Couple mesuré Feuil2.Range("G" & LigneTab).Value = Feuil1.Range("C" & LigneRes).Value 'Statut angle Feuil2.Range("H" & LigneTab).Value = Feuil1.Range("D" & LigneRes).Value 'Angle mesuré Feuil2.Range("I" & LigneTab).Value = Feuil1.Range("E" & LigneRes).Value 'Date Feuil2.Range("J" & LigneTab).Value = Feuil1.Range("O" & LigneRes).Value 'Horaire Feuil2.Range("K" & LigneTab).Value = Feuil1.Range("P" & LigneRes).Value 'Lot de la sequence Feuil2.Range("L" & LigneTab).Value = Feuil1.Range("Q" & LigneRes).Value '(Projet) Feuil2.Range("N" & LigneTab).Value = Feuil1.Range("S" & LigneRes).Value 'oppérateur Feuil2.Range("P" & LigneTab).Value = Feuil1.Range("U" & LigneRes).Value 'N° Programme Feuil2.Range("R" & LigneTab).Value = Feuil1.Range("W" & LigneRes).Value 'N° gamme Feuil2.Range("S" & LigneTab).Value = Feuil1.Range("AD" & LigneRes).Value 'Statut Lot Feuil2.Range("T" & LigneTab).Value = Feuil1.Range("AB" & LigneRes).Value 'Lot OK If Feuil2.Range("T" & LigneTab).Value Like "Lot OK" Then Feuil2.Range("U" & LigneTab).Value = 1 Else Feuil2.Range("U" & LigneTab).Value = 0 End If 'Etape Feuil2.Range("v" & LigneTab).Value = Left(Feuil2.Range("D" & LigneTab).Value, 2) 'Type Feuil2.Range("W" & LigneTab).Value = Left(Feuil2.Range("M" & LigneTab).Value, 1) 'Serrage - déserrage Feuil2.Range("X" & LigneTab).Value = 2 'Séparation du N° de Projet et N°de Tranfo Feuil2.Range("b" & LigneTab).Value = Left(Feuil2.Range("o" & LigneTab).Value, 6) Feuil2.Range("c" & LigneTab).Value = Right(Feuil2.Range("o" & LigneTab).Value, 3) 'Corespondance du n°de Projet avec le nom de Projet 'Compteur de ligne While Feuil14.Range("a" & Ligne) <> Feuil2.Range("b" & LigneTab).Value And Ligne <> 20 Ligne = Ligne + 1 Wend Feuil2.Range("a" & LigneTab).Value = Feuil14.Range("b" & Ligne).Value 'Reset compteur Ligne = 2 'Recherche de la valeur du couple While Feuil5.Range("C" & Ligne) <> Feuil2.Range("M" & LigneTab).Value And Ligne <> 1000 Ligne = Ligne + 1 Wend Feuil2.Range("Q" & LigneTab).Value = Feuil5.Range("D" & Ligne).Value 'Reset Compteur Ligne = 2 'ID Serrage Feuil2.Range("Y" & LigneTab).Value = Feuil2.Range("N" & LigneTab).Value & Feuil2.Range("c" & LigneTab).Value & _ Feuil2.Range("U" & LigneTab).Value & Feuil2.Range("v" & LigneTab).Value & Feuil2.Range("X" & LigneTab).Value 'Incrémentation des compteurs du Resultat du PF et Tableau du PF LigneRes = LigneRes + 1 LigneTab = LigneTab + 1 Wend ''''''''''''''Fin Code''''''''''''''''' Application.ScreenUpdating = BoEcran Application.DisplayStatusBar = BoBarre Application.Calculation = iCalcul Application.EnableEvents = BoEvent ActiveSheet.DisplayPageBreaks = BoSaut End Sub
Partager