Raccourcis temps de traitement
Bonjour,
Si vous avez des idées pour réduire le temps de traitement du code ci-dessous:
Je suis preneuse ! Merci
Sub AllColleEtSauve()
Dim Cellule As Range, LaDate As String
Dim Stard As Single
Start = Timer
myMonth = Application.InputBox("MOIS")
For Each Cellule In Range("SERVICES")
LaDate = Format(Date, "YYYY-M-D")
Sheets("DETAILS 20VS19").Copy
Sheets.Add(Before:=Sheets("DETAILS 20VS19")).Name = "SYNTHESE"
ThisWorkbook.Sheets("Synthese").Range(Cellule.Value).Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial 8
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").AutoFilter Field:=19, Criteria1:= _
Cellule.Value
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").Copy
Sheets.Add(After:=Sheets("DETAILS 20VS19")).Name = "DONNEES 2019"
ActiveSheet.Paste
Sheets("DONNEES 2019").Range("A:M").Name = "DATA19"
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotSelect "", xlDataAndLabel, True
Sheets("DETAILS 20VS19").PivotTables("TCD19").ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:="=DATA19", Version:=6)
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotCache.Refresh
Sheets("DETAILS 20VS19").PivotTables("TCD19").SaveData = True
Sheets("SYNTHESE").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\" & myMonth & "e\" _
& Cellule.Value & " " & LaDate, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Next Cellule
MsgBox "Le chemin de vos fichiers :
MsgBox "Durée du traitement: " & Timer - Start & " secondes"
End Sub
Salut saaku,
à tester
Sub AllColleEtSauve()
Dim Cellule As Range, LaDate As String, CalcState As Long, EventState As Boolean, PageBreakState As Boolean
Dim Stard As Single
Application.ScreenUpdating = False
EventState = Application.EnableEvents
Application.EnableEvents = False
CalcState = Application.Calculation
Application.Calculation = xlCalculationManual
PageBreakState = ActiveSheet.DisplayPageBreaks
ActiveSheet.DisplayPageBreaks = False
Start = Timer
myMonth = Application.InputBox("MOIS")
For Each Cellule In Range("SERVICES")
LaDate = Format(Date, "YYYY-M-D")
Sheets("DETAILS 20VS19").Copy
Sheets.Add(Before:=Sheets("DETAILS 20VS19")).Name = "SYNTHESE"
ThisWorkbook.Sheets("Synthese").Range(Cellule.Value).Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial 8
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").AutoFilter Field:=19, Criteria1:= _
Cellule.Value
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").Copy
Sheets.Add(After:=Sheets("DETAILS 20VS19")).Name = "DONNEES 2019"
ActiveSheet.Paste
Sheets("DONNEES 2019").Range("A:M").Name = "DATA19"
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotSelect "", xlDataAndLabel, True
Sheets("DETAILS 20VS19").PivotTables("TCD19").ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:="=DATA19", Version:=6)
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotCache.Refresh
Sheets("DETAILS 20VS19").PivotTables("TCD19").SaveData = True
Sheets("SYNTHESE").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\" & myMonth & "e\" _
& Cellule.Value & " " & LaDate, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Next Cellule
MsgBox "Le chemin de vos fichiers :"
MsgBox "Durée du traitement: " & Timer - Start & " secondes"
ActiveSheet.DisplayPageBreaks = PageBreakState
Application.Calculation = CalcState
Application.EnableEvents = EventState
Application.ScreenUpdating = True
End Sub
Bonne journée
Merci à toi,
Mais ça fait planter la boucle :/
et comme ca?
Sub AllColleEtSauve()
Dim Cellule As Range, LaDate As String
Dim Stard As Single
Application.ScreenUpdating = False
Start = Timer
myMonth = Application.InputBox("MOIS")
For Each Cellule In Range("SERVICES")
LaDate = Format(Date, "YYYY-M-D")
Sheets("DETAILS 20VS19").Copy
Sheets.Add(Before:=Sheets("DETAILS 20VS19")).Name = "SYNTHESE"
ThisWorkbook.Sheets("Synthese").Range(Cellule.Value).Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial 8
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").AutoFilter Field:=19, Criteria1:= _
Cellule.Value
ThisWorkbook.Sheets("DONNEES 2019").Range("DATA19").Copy
Sheets.Add(After:=Sheets("DETAILS 20VS19")).Name = "DONNEES 2019"
ActiveSheet.Paste
Sheets("DONNEES 2019").Range("A:M").Name = "DATA19"
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotSelect "", xlDataAndLabel, True
Sheets("DETAILS 20VS19").PivotTables("TCD19").ChangePivotCache ActiveWorkbook.PivotCaches. _
Create(SourceType:=xlDatabase, SourceData:="=DATA19", Version:=6)
Sheets("DETAILS 20VS19").PivotTables("TCD19").PivotCache.Refresh
Sheets("DETAILS 20VS19").PivotTables("TCD19").SaveData = True
Sheets("SYNTHESE").Select
ActiveWorkbook.SaveAs Filename:= _
"C:\" & myMonth & "e\" _
& Cellule.Value & " " & LaDate, _
FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close
Next Cellule
MsgBox "Le chemin de vos fichiers :"
MsgBox "Durée du traitement: " & Timer - Start & " secondes"
Application.ScreenUpdating = True
End Sub