Bonjour à tous
Je cherche la solution pour fermé excel après suppression de worksheets.
Avec le code ci-après, j'ouvre un fichier excel, je supprime tous les onglets sauf un et ajoute une ligne entete en la fixant. Je le ferme et j'essaye de le sauvegarder et de quitter excel
Mais excel ne quitte pas et donc mon fichier est toujours occupé. Je ne peux l'utiliser ailleurs dans mon projet mais pas le déplacer.
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 Sub FormatExtraitSap() On Error Resume Next Dim filePath As String Dim AppExcel As Object 'Excel.Application Dim Classeur As Object 'Excel.Workbook Dim ws As Excel.Worksheet Dim r As Range 'important d'avoir le nom du fichier !! filePath = CurrentProject.Path & "\MonRep\MonFichier.xlsx" 'lier vers l'înstance excel existante Set AppExcel = GetObject(, "Excel.Application") If Err.Number <> 0 Then 'Ne peut pas avoir une instance d'excel, donc création d'une nouvelle Err.Clear On Error GoTo FormatExtraitSap_Error Set AppExcel = CreateObject("EXCEL.APPLICATION") Else On Error GoTo FormatExtraitSap_Error End If 'ouverture du fichier précis donné par le chemin filePath Set Classeur = AppExcel.Workbooks.Open(filePath) 'MsgBox AppExcel.Worksheets.Count AppExcel.DisplayAlerts = False For Each ws In Classeur.Worksheets If ws.Name <> "RawData" Then ws.Delete Next AppExcel.DisplayAlerts = True 'renommage des entêtes AppExcel.Range("A1") = "strNumOrdreSap" AppExcel.Range("B1") = "strNomOrdreSap" AppExcel.Range("C1") = "lngV0Sap" AppExcel.Range("D1") = "lngV1Sap" AppExcel.Range("E1") = "lngReelN" AppExcel.Range("F1") = "lngReelCumule" AppExcel.Range("G1") = "lngEngagementN" AppExcel.Range("H1") = "lngEngagementCumule" AppExcel.Range("A2").Select With AppExcel.ActiveWindow .FreezePanes = False .ScrollRow = 1 .ScrollColumn = 1 .FreezePanes = True .ScrollRow = r.Row End With ActiveWindow.FreezePanes = True 'AppExcel.Workbooks(filePath).Close SaveChanges:=True 'Classeur.Close saveChanges:=True Classeur.SaveAs CurrentProject.Path & "\MonRep\" & "Test" & Format(Date, "ddmmyyyy") & ".xlsx" AppExcel.Quit ' xls.Workbooks(filePath).Close True 'xls.workbooks.Close filePath true Set ws = Nothing Set Classeur = Nothing Set AppExcel = Nothing FormatExtraitSap_Error: If Err.Number = 9 Then 'Worksheet pas trouvé MsgBox "Worksheet pas trouvé dans le WorkBook", vbCritical Exit Sub End If End Sub
Merci pour votre aide
@++
Partager