Bonjour,
j'ai une fonction :
qui permet donc d'exporter le contenu d'une table vers un fichier excel, File = fichier de destination, Dest = Feuille de destination, Source = ma table.
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
70
71
72
73 Function sCopyRSToXLS(File, Dest, source) Dim objXL As Excel.Application Dim objWkb As Excel.Workbook Dim objSht As Excel.Worksheet Dim db As Database Dim rs As Recordset Const conMAX_ROWS = 20000 Dim conSHT_NAME As String Dim conWKB_NAME As String Dim conRANGE As String Dim bError As Boolean Dim RangeName As Name Dim iLines, iCols As Integer Dim sRange As String Set db = CurrentDb Set objXL = New Excel.Application Set rs = db.OpenRecordset(source, dbOpenSnapshot) With objXL conWKB_NAME = File conSHT_NAME = Dest .Visible = True bError = True If Dir(File) <> "" Then Set objWkb = .Workbooks.Open(conWKB_NAME) bError = False Else Set objWkb = .Workbooks.Add End If On Error Resume Next Set objSht = objWkb.Worksheets(conSHT_NAME) If Not err.Number = 0 Then Set objSht = objWkb.Worksheets.Add objSht.Name = conSHT_NAME End If err.Clear On Error GoTo 0 If Not rs.EOF Then rs.MoveFirst rs.MoveLast End If iLines = rs.RecordCount objSht.Activate If Not rs.EOF Then For iCols = 1 To rs.Fields.count objSht.Cells(1, iCols).Value = rs.Fields(iCols - 1).Name Next rs.MoveFirst objSht.Range(.Cells(2, 1), .Cells(iLines, rs.Fields.count)).CopyFromRecordset rs End If If bError = False Then .ActiveWorkbook.Save Else .ActiveWorkbook.SaveAs conWKB_NAME End If .ActiveWorkbook.Close .QUIT End With Set objSht = Nothingi Set objWkb = Nothing Set objXL = Nothing Set rs = Nothing Set db = Nothing End Function
C'est le bout de code en gras qui nous interesse, dans un 1er temps je rempli la 1ere ligne avec le nom des colonnes de ma table, puis je copie l'intégralité de la table en commencant par la ligne 2 de mon fichier excel, mon souci c'est que pour une table ca marche tres bien, j'ai le nom des colonnes et les données en dessus, mais pour une autre table, il m'écrase la 1ere ligne et je ne sais absolument pas pourquoi, alors que les 2 tables n'ont pas de différence significative. J'ai essayé en mettantet meme probleme, il rempli a partir de la 1ere ligne de mon fichier excel
Code : Sélectionner tout - Visualiser dans une fenêtre à part objSht.Range(.Cells(3, 1), .Cells(iLines, rs.Fields.count)).CopyFromRecordset rs
D'avance merci
Aerofly
Partager