Bonjour,
Après avoir beaucoup écumé les forums (en, fr) et galéré pour comprendre pourquoi mon automation Excel (depuis aAcess) ne se fermait pas correctement (instance excel toujours en exécution) voici ce que j'ai trouvé : code ci-dessous
Quelqu'un saurait-il pourquoi "cells" provoque ce problème où est-ce un bug ?
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 Private Sub test_fermer_excel_range() Dim appXl As Excel.Application Dim wbXl As Excel.Workbook Dim wsXl As Excel.Worksheet Dim rgeXl As Excel.Range ' Set appXl = New Excel.Application 'DocXlsOpening "l:\", "test_excel_range.xls", "feuil1" 'procédure d'ouverture d'un doc appXl.Workbooks.Open ("l:\test_excel_range.xls") 'Set wbXl = appXl.Workbooks.Add 'Set wsXl = wbXl.ActiveSheet Set wsXl = wbXl.Worksheets("feuil1") Set rgeXl = wsXl.Range("C2", "D2") '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'Instruction (équivalente à celle au-dessus en terme de fonctionnalité) ' Set rgeXl = wsXl.Range(Cells(2, 3), Cells(2, 4)) ' l'utilisation de cells empêche la libération ultérieur de l'objet rgeXl (range) ' empêche la fermeture "propre" de Excel par une procédure '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! appXl.Visible = True rgeXl.Value = "test" With rgeXl .Font.Bold = True .Font.Size = 9 End With Set rgeXl = Nothing 'DocXlsClose 'procédure de fermeture d'un doc excel et de excel Set wsXl = Nothing wbXl.SaveAs "test_excel_range" wbXl.Close savechanges:=False Set wbXl = Nothing appXl.Quit Set appXl = Nothing End Sub
Pour ma part je préfèrerai largement utiliser "cells" plutôt que utiliser les lettres pour les colonnes.
En vous remerciant pour vos lumières !
Chetbo
Partager