Bonjour à tous,
Une macro qui a été créée sous Excel 2007, et qui s'exécute normalement sous cette même version prend un temps infini sur les versions supérieures Excel 2013/2016.
Je suis condamné a utilisé Excel 2007 pour exécuter la macro mais ça n'est pas une solution à long terme.
Avez-vous une idée pour savoir quoi faire pour lancer la macro sur les dernières versions d'Excel, sans attendre éternellement que la macro soit exécutée ?
Pour information, la macro compare les données d'un autre fichier Excel pour finalement en créer un nouveau avec les données remplacé et actualisé.
Merci pour vos réponses,
Cordialement,
Voici la macro en question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 'File Dim SIMFILE As String 'Name of the SIM File Dim EXTRACTFILE As String 'Name of the Extract file 'Sheet Dim SIMSHEET As String 'Name of the SIM's sheet Dim EXTRACTSHEET As String 'Name of the extract's sheet Dim MODIFICATIONSHEET As String ' Name of the modification sheet Dim SUPPRESSIONSHEET As String 'Name of the deleted row sheet 'Index Dim MODIFICATION As Integer 'Index of the last modification in the sheet "Modifications" Dim SUPPRIMEE As Integer 'Index of the last suppression in the sheet "Deleted rows" 'MPM Dim MPM As String
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 Function InsertionSub(EXTRACT As Integer, SIM As Integer) 'Creation of the new line Workbooks(SIMFILE).Worksheets(SIMSHEET).Select Workbooks(SIMFILE).Worksheets(SIMSHEET).Rows(SIM & ":" & SIM).Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove If SIM = 4 Then Workbooks(SIMFILE).Worksheets(SIMSHEET).Rows(SIM + 1 & ":" & SIM + 1).Select Selection.Copy Workbooks(SIMFILE).Worksheets(SIMSHEET).Rows(SIM & ":" & SIM).Select Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Activate Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Range(Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 1).address(RowAbsolute:=False, ColumnAbsolute:=False) & ":" & Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 51).address(RowAbsolute:=False, ColumnAbsolute:=False)).Select Selection.Copy Workbooks(SIMFILE).Sheets(SIMSHEET).Activate Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 2).Select 'ActiveSheet.Paste Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 1).Value = 0 'Update de l'onglet modifications Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 1).Value = "Ajout" Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 2).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 2).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 3).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 7).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 4).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 4).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 5).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 48).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 6).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 29).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 7).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 34).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 8).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 51).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 9).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 19).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 34).Value = 0 Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Select Range("AI" & MODIFICATION).Select ActiveCell.FormulaR1C1 = _ "=SUM(VLOOKUP(RC2,INDIRECT(R1C30&R1C31),{66;67},FALSE))" Range("AJ" & MODIFICATION).Select ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]" MODIFICATION = MODIFICATION + 1 End Function
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 Sub SuppressionSub(SIM As Integer) 'Suppression of the old line Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 1).Value = "Suppression" Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 2).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 2).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 3).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 7).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 4).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 4).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 5).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 48).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 6).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 29).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 7).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 34).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 8).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 51).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 9).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 19).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 34).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 67).Value + Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 68).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Select Range("AI" & MODIFICATION).Value = 0 Range("AJ" & MODIFICATION).Select ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]" MODIFICATION = MODIFICATION + 1 Workbooks(SIMFILE).Worksheets(SIMSHEET).Select Workbooks(SIMFILE).Worksheets(SIMSHEET).Rows(SIM & ":" & SIM).Select Selection.Copy Workbooks(SIMFILE).Sheets(SUPPRESSIONSHEET).Select Rows(SUPPRIMEE & ":" & SUPPRIMEE).Select ActiveSheet.Paste Range("A" & SUPPRIMEE).Select ActiveCell.FormulaR1C1 = "=TODAY()" Range("A" & SUPPRIMEE).Select Selection.Copy Range("A" & SUPPRIMEE).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False SUPPRIMEE = SUPPRIMEE + 1 Workbooks(SIMFILE).Worksheets(SIMSHEET).Activate Workbooks(SIMFILE).Worksheets(SIMSHEET).Rows(SIM & ":" & SIM).Select Selection.Delete Shift:=xlUp End Sub
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134 Function ModficationSub(EXTRACT As Integer, SIM As Integer) 'Search changes Dim Changes As String Changes = "" 'TODO Check and update modification SHEET If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 6).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 7).Value Then Changes = Changes & "LEVER" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 20).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 7).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 32).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 6).Value End If ' If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 43).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 44).Value Then Changes = Changes & "Delta in volume" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 21).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 44).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 33).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 43).Value End If ' If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 5).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 6).Value Then Changes = Changes & "TEMPO ID" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 10).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 6).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 22).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 5).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 8).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 9).Value Then Changes = Changes & "PHASE" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 11).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 9).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 23).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 8).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 12).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 13).Value Then Changes = Changes & "Main Program" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 12).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 13).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 24).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 12).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 14).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 15).Value Then Changes = Changes & "Product Line" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 13).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 15).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 25).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 14).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 25).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 26).Value Then Changes = Changes & "End date" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 14).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 26).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 26).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 25).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 36).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 37).Value Then Changes = Changes & "Manuf Country" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 15).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 37).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 27).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 36).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 37).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 38).Value Then Changes = Changes & "P&L date" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 16).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 38).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 28).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 37).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 38).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 39).Value Then Changes = Changes & "Initial spend" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 17).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 39).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 29).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 38).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 39).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 40).Value Then Changes = Changes & "FYS" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 18).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 40).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 30).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 39).Value End If If Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 41).Value <> Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 42).Value Then Changes = Changes & "CF" & Chr(10) 'Avant Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 19).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 42).Value 'Après Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 31).Value = Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 41).Value End If If Changes <> "" Then 'Modification de l'Format, changement du statut Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 1).Value = 2 'Ajout d'une ligne dans le tableau des modifications Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 1).Value = "Modification" Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 2).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 2).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 3).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 7).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 4).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 4).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 5).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 48).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 6).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 29).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 7).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 34).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 8).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 51).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 9).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 19).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(MODIFICATION, 34).Value = Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 67).Value + Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 68).Value Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Select Range("AI" & MODIFICATION).Select ActiveCell.FormulaR1C1 = _ "=SUM(VLOOKUP(RC2,INDIRECT(R1C30&R1C31),{66;67},FALSE))" Range("AJ" & MODIFICATION).Select ActiveCell.FormulaR1C1 = "=RC[-1]-RC[-2]" MODIFICATION = MODIFICATION + 1 Else Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 1).Value = 1 End If 'Copy the new line Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Activate Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Range(Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 1).address(RowAbsolute:=False, ColumnAbsolute:=False) & ":" & Workbooks(EXTRACTFILE).Sheets(EXTRACTSHEET).Cells(EXTRACT, 51).address(RowAbsolute:=False, ColumnAbsolute:=False)).Select Selection.Copy Workbooks(SIMFILE).Sheets(SIMSHEET).Activate Workbooks(SIMFILE).Sheets(SIMSHEET).Cells(SIM, 2).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Function OpenExtract(partialName As String) As String Application.DisplayAlerts = False 'retire les alertes Excel si le fichier est déjà ouvert If Dir(ActiveWorkbook.Path & "\" & partialName) <> "" Then 'Vérification de l'existance du fichier extract Workbooks.Open (ActiveWorkbook.Path & "\" & Dir(ActiveWorkbook.Path & "\" & partialName)) Workbooks(Dir(ActiveWorkbook.Path & "\" & partialName)).Activate Application.DisplayAlerts = True Else MsgBox ("Extract file not found.") End If OpenExtract = ActiveWorkbook.Name End Function
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 Function SortFile() ' ' Macro3 Macro ' Workbooks(SIMFILE).Activate Sheets(SIMSHEET).Rows("3:3").Select If Not ActiveSheet.AutoFilter Is Nothing Then 'A filter exist Selection.AutoFilter Selection.AutoFilter Else Selection.AutoFilter End If ActiveWorkbook.Worksheets(SIMSHEET).AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets(SIMSHEET).AutoFilter.Sort.SortFields.Add Key:=Range( _ "B3"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets(SIMSHEET).AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Workbooks(EXTRACTFILE).Activate Sheets(EXTRACTSHEET).Rows("2:2").Select If Not ActiveSheet.AutoFilter Is Nothing Then 'A filter exist Selection.AutoFilter Selection.AutoFilter Else Selection.AutoFilter End If ActiveWorkbook.Worksheets(EXTRACTSHEET).AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets(EXTRACTSHEET).AutoFilter.Sort.SortFields.Add Key:=Range( _ "A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets(EXTRACTSHEET).AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Workbooks(SIMFILE).Activate SortFile = 1 End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Public Function checkMPM(SIMCount As Integer, EXTRACTCount As Integer) checkMPM = Workbooks(EXTRACTFILE).Worksheets(EXTRACTSHEET).Cells(EXTRACTCount, 52).Value = MPM End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Function Clean_modification() ' Vide le tableau des modifications Dim i As Integer i = 4 Do While Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Cells(i, 2).Value <> "" Workbooks(SIMFILE).Sheets(MODIFICATIONSHEET).Rows(i).EntireRow.Delete Loop End Function
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 Sub FillFormule() Dim i As Integer i = 4 Sheets(SIMSHEET).Select Do While Cells(i, 1).Value <> "" If Cells(i, 1) = 0 Then Range("BA" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC55,Tables!R2C51:R6C52,2,FALSE)" Range("BB" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-36],Tables!R2C1:R86C5,2,FALSE)" Range("BC" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-37],Tables!R2C1:R86C5,4,FALSE)" Range("BD" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-38],Tables!R2C1:R86C5,5,FALSE)" Range("BE" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-48],Tables!R2C28:R21C29,2,0)" Range("BF" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-43],Tables!R2C39:R48C45,2,FALSE)),""Others"",VLOOKUP(RC[-43],Tables!R2C39:R48C45,2,FALSE))" Range("BG" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-44],Tables!R2C39:R48C45,3,FALSE)),""Others"",VLOOKUP(RC[-44],Tables!R2C39:R48C45,3,FALSE))" Range("BH" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-45],Tables!R2C39:R48C45,4,FALSE)),""Others"",VLOOKUP(RC[-45],Tables!R2C39:R48C45,4,FALSE))" Range("BI" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(ISERROR(VLOOKUP(RC[-46],Tables!R2C39:R48C45,7,FALSE)),""Others"",VLOOKUP(RC[-46],Tables!R2C39:R48C45,7,FALSE))" Range("BJ" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(AND(RC[1]=""MEC"",RC[2]=""NEC"",RC[-52]<>""CANCELLED""),""ACCESS"",""Other"")" Range("BK" & i).Select ActiveCell.FormulaR1C1 = _ "=IFERROR(VLOOKUP(RC[-32],Tables!R2C35:R244C36,2,FALSE),"""")" Range("BL" & i).Select ActiveCell.FormulaR1C1 = _ "=IFERROR(VLOOKUP(RC[-28],Tables!R2C35:R244C36,2,FALSE),"""")" Range("BM" & i).Select ActiveCell.FormulaR1C1 = "=YEAR(RC[-27])" Range("BN" & i).Select ActiveCell.FormulaR1C1 = "=RC[-27]*RC[-24]/100" Range("BO" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-2]= R2C[-2],IF(RC[-57]=""REC"",IF(RC11=""YES - SPOT"", RC[-24],( RC[-24]*(13-MONTH(RC[-29]))/12)),0),0)" Range("BP" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC[-3]= R2C[-3]-1,(IF(RC[-58]=""NRC"",0,IF(RC11=""YES - SPOT"",0,(( RC[-25]/12)*(12-(13-MONTH(RC[-30])))*(1+(RC[-24]/100)))))),0)" Range("BQ" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))" Range("BR" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BS" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BT" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BU" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BV" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BW" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BX" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BY" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("BZ" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("CA" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("CB" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(RC68<>0,IF(MONTH(RC38)>R3C,RC43*(1+(RC44/100))/12,0),IF(RC67<>0,IF(MONTH(RC38)<=R3C,IF(RC11=""YES - REC"",RC43/12,IF(MONTH(RC38)= R3C,RC67,0)),0),0))+RC[-1]" Range("CC" & i).Value = 0 Range("CD" & i).Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-75],Tables!R2C48:R10C49,2,FALSE)" Range("DG" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(C[-101]<>""NRC"",IF(C[-100] <> ""YES - SPOT"",RC[-71],IF(RC[-46]=R2C65,RC[-71],0)),0)" Range("DF" & i).Select ActiveCell.FormulaR1C1 = _ "=IF(C[-100]<>""NRC"",IF(C[-99] <> ""YES - SPOT"",(RC[-70]/12)*(13-MONTH(RC[-72])),IF(RC[-45]=R2C65,RC[1],0)),0)" End If i = i + 1 Loop End Sub
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 Sub Update() Dim SIM, EXTRACT As String SIM = "" EXTRACT = "" 'File SIMFILE = ActiveWorkbook.Name Dim start As Single Dim temps As Integer Dim emptyVar As Integer Dim partialName As String Dim NomFichier As String NomFichier = "_SIM_GSC-Europe_Consolidated.xlsm" Dim SIMCount As Integer Dim EXTRACTCount As Integer SIMCount = 4 EXTRACTCount = 3 partialName = "*OTTO_data_Patrizio*" 'MPM MPM = "Conso" 'Sheet SIMSHEET = "OTTO" EXTRACTSHEET = "Global without cancelled" MODIFICATIONSHEET = "Modifications" SUPPRESSIONSHEET = "Deleted rows" 'Index MODIFICATION = 4 Dim i As Integer i = 4 Do While Workbooks(SIMFILE).Sheets(SUPPRESSIONSHEET).Cells(i, 2).Value <> "" i = i + 1 Loop SUPPRIMEE = i 'OPEN EXTRACTFILE = OpenExtract(partialName) Workbooks(SIMFILE).Activate If EXTRACTFILE <> SIMFILE Then If MsgBox("Are you sure you want to update the file with the extraction " & EXTRACTFILE & " ?", vbYesNo, "Demande de confirmation") = vbYes Then Application.Calculation = xlManual Application.ScreenUpdating = False Range("A1").Value = Date 'SORT emptyVar = SortFile 'CHECK Clean_modification start = Timer Do While Workbooks(EXTRACTFILE).Worksheets(EXTRACTSHEET).Cells(EXTRACTCount, 1).Value <> "" Or Workbooks(SIMFILE).Worksheets(SIMSHEET).Cells(SIMCount, 2).Value <> "" SIM = Workbooks(SIMFILE).Worksheets(SIMSHEET).Cells(SIMCount, 2).Value EXTRACT = Workbooks(EXTRACTFILE).Worksheets(EXTRACTSHEET).Cells(EXTRACTCount, 1).Value If SIM <> "" Then If EXTRACT <> "" Then Select Case (EXTRACT) Case Is > SIM: SuppressionSub (SIMCount) Case Is = SIM: emptyVar = ModficationSub(EXTRACTCount, SIMCount) EXTRACTCount = EXTRACTCount + 1 SIMCount = SIMCount + 1 Case Is < SIM: If checkMPM(SIMCount, EXTRACTCount) Then emptyVar = InsertionSub(EXTRACTCount, SIMCount) EXTRACTCount = EXTRACTCount + 1 SIMCount = SIMCount + 1 Else EXTRACTCount = EXTRACTCount + 1 End If End Select Else SuppressionSub (SIMCount) End If Else If checkMPM(SIMCount, EXTRACTCount) Then emptyVar = InsertionSub(EXTRACTCount, SIMCount) EXTRACTCount = EXTRACTCount + 1 SIMCount = SIMCount + 1 Else EXTRACTCount = EXTRACTCount + 1 End If End If Loop Workbooks(SIMFILE).Activate FillFormule Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic temps = Timer - start Sheets(SIMSHEET).Range("B1").Value = EXTRACTFILE & " - " & temps & " secondes." MsgBox "File updated successfully. Duration of treatment: " & temps & " secondes " & Chr(13) & " File save as '" & Replace(Format(Sheets(SIMSHEET).Range("A1").Value, "YYYY/MM/dd"), "/", "_") & NomFichier & "'." 'Sauvegarde à la date du jour ActiveWorkbook.SaveAs Filename:= _ ActiveWorkbook.Path & "\" & Replace(Format(Sheets(SIMSHEET).Range("A1").Value, "YYYY/MM/dd"), "/", "_") & NomFichier _ , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False Else MsgBox "Update canceled." End If Application.DisplayAlerts = False Workbooks(EXTRACTFILE).Close Application.DisplayAlerts = True End If End Sub
Partager