Bonjour,

Je ne parviens pas à redimensionner un tableau Excel créer depuis Access.

La création du tableau fonctionne très bien et à la fin de la procédure, Excel n'est plus en mémoire.

Lorsque je rajoute du code pour redimensionner les colonnes ou affecter un nouveau libellé, je ne parviens plus à ouvrir le fichier Excel et de plus, même en refermant Excel, il demeure en mémoire (cf. lignes 36 à 38).

Une idée ?

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
'---------------------------------------------------------------------------------------
' Procédure : cmdExportExcel_Click
' Autheur   : Gabout
' Date      : 07/10/2011
' Utilité   : exporter les données vers Excel
'---------------------------------------------------------------------------------------
Private Sub cmdExportExcel_Click()
  ' declarer les variables
  Dim qd As QueryDef
  Dim sSQL As String
  Dim sFic As String
  Dim xlApp As Excel.Application
  Dim xlSheet As Excel.Worksheet
  Dim xlBook As Excel.Workbook
  ' verifier si la requete existe et la supprimer si c'est le cas
  If testQuery("Requete_Temporaire") = True Then DoCmd.DeleteObject acQuery, "Requete_Temporaire"
  ' créer la requete
  sSQL = "SELECT tFAM.famlib, tART.artid, tART.artlib, tDET.detref, tDET.dettai, tUNI.unilib, tDET.detpuht, '' AS Quantité " & _
         "FROM tUNI INNER JOIN (tFAM INNER JOIN (tART INNER JOIN tDET ON tART.artid = tDET.detart) ON tFAM.famid = tART.artfam) ON tUNI.uniid = tART.artuni " & _
         "WHERE tART.artact=Yes " & _
         "ORDER BY tART.artid;"
  Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", sSQL)
  ' nommer le fichier d'export
  sFic = CurrentProject.Path & "\EXP_" & Format(DMax("[hisdat]", "tHIS"), "yyyymmdd") & ".xls"
  ' exporter la requete
  DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Requete_Temporaire", sFic
  ' effacer la requete
  DoCmd.DeleteObject acQuery, "Requete_Temporaire"
  ' instancifier
  Set xlApp = CreateObject("Excel.application")
  Set xlBook = xlApp.Workbooks.Open(sFic)
  'Set xlSheet = xlBook.Worksheets("Requete_Temporaire")
 
' C'EST A PARTIR DE CE RAJOUT DE 3 LIGNES QUE CELA COINCE :
' EXCEL EST TOUJOURS EN MEMOIRE ET LES DONNEES N'APPARAISSENT PAS
  Sheets("Requete_Temporaire").Select
  Range("A1").FormulaR1C1 = "Catégorie"
  Columns("A:A").ColumnWidth = 28
' SI JE SUPPRIME LES 3 LIGNES, PLUS DE PROBLEME : EXCEL N'EST
' PLUS EN MEMOIRE
  '
  ' fermeture
  xlBook.Save
  xlApp.Quit
  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing
End Sub