Enregistrement automatique à la fermeture du fichier
S
Bonjour,
J'aimerais que dans la macro suivante il y ai l'enregistrement automatique à la fermeture sans aucun message, c'est à dire que lorsque je ferme le fichier et bien qu'il y ai un enregistrement automatique.
A mon avis il faut utiliser le code
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = trueVoici ma macro dans ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim dernligne As Long, derncol As Long
Dim dernligneCol As Long, derncolCol As Long
Dim TabPrevision As Variant, TabRecap As Variant, sh As Worksheet, NomService As String, NomFichier As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
CopieDansFichier Sheets("Params").Cells(3, 1) & "\" & Sheets("Params").Cells(3, 2), "Previsionnel_Mensuel", 11, Sheets("Params").Range("NomService").Value
CopieDansFichier Sheets("Params").Cells(3, 1) & "\" & Sheets("Params").Cells(2, 2), "Recap_HeureS", 12, Sheets("Params").Range("NomService").Value
Application.ThisWorkbook.Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Sub CopieDansFichier(FichierCible As String, FeuilleCible As String, NumColTri As String, NomService As String)
Dim TableauLignes As Variant, DerLig As Long, DerLigOrigine As Long
With ActiveWorkbook.Worksheets(FeuilleCible)
If .FilterMode = True Then .ShowAllData
DerLigOrigine = .Range("A" & Rows.Count).End(xlUp).Row
' derncol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
TableauLignes = .Range(.Cells(2, 1), .Cells(DerLigOrigine, 15)).Value
End With
Workbooks.Open Filename:=FichierCible, ReadOnly:=False
'suppression des lignes du service
DerLig = ActiveWorkbook.Worksheets(FeuilleCible).Range("A" & Rows.Count).End(xlUp).Row
ActiveWorkbook.Worksheets(FeuilleCible).Range("$A:$K").AutoFilter Field:=NumColTri, Criteria1:=NomService
ActiveWorkbook.Worksheets(FeuilleCible).Rows("2:" & DerLig).SpecialCells(xlCellTypeVisible).Delete
If ActiveWorkbook.Worksheets(FeuilleCible).AutoFilterMode = False Then
ActiveWorkbook.Worksheets(FeuilleCible).Rows("1:1").AutoFilter
Else
ActiveWorkbook.Worksheets(FeuilleCible).Rows("1:1").AutoFilter
ActiveWorkbook.Worksheets(FeuilleCible).Rows("1:1").AutoFilter
End If
'If ActiveWorkbook.Worksheets(FeuilleCible).FilterMode = True Then ActiveWorkbook.Worksheets(FeuilleCible).ShowAllData
DerLig = ActiveWorkbook.Worksheets(FeuilleCible).Range("A" & Rows.Count).End(xlUp).Row
ActiveWorkbook.Worksheets(FeuilleCible).Range("A" & DerLig + 1 & ":O" & DerLig + DerLigOrigine - 1) = TableauLignes
ActiveWorkbook.Save
ActiveWorkbook.Close
End SubMerci pour votre aide
Bonjour Snowkite,
Du coup tu as essayé ce que tu penses ?
( dans la partie "Workbook_BeforeClose" et "CopieDansFichier")
S
Problème résolu, il suffisait de mettre
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomaticAvant celui si
Application.ThisWorkbook.Save
Application.DisplayAlerts = TrueEt non l'inverse
Application.ThisWorkbook.Save
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic