Bonjour tout le monde,
Je me sers du produit suivant (programme trouvé sur la rubrique Tutoriel) pour exporter une requête vers un ficheir Excel, et cela marche très bien. Je souhaite cependant faire en sorte qu'il m'exporte 4 requêtes sur un même fichier Excel mais dans quatres onglets distincts(en les titrant éventuellement) et qu'en cas de nouvelle exportation la récente n'écrase pas l'ancienne.
Merci par avance de votre aide qui m'ait très précieusecar je bloque vraiment sur ce point depuis quelques temps.
Voici le code du tutoriel pour l'exportation:
j'ai fait un sous programme:
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 Function TransfertExcelAutomation() Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook Dim I As Long, J As Long Dim t0 As Long, t1 As Long t0 = Timer Dim rec As Recordset Set rec = CurrentDb.OpenRecordset("Maquette_TOP", dbOpenSnapshot) 'Initialisations Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add 'Ajouter une feuille de calcul Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Tutor" ' le titre ' écriture dans la cellule de ligne 1 et de colonne 1 xlSheet.Cells(1, 1) = "Structure des donées" ' les entetes ' .Fields(Index).Name renvoie le nom du champ For J = 0 To rec.Fields.Count - 1 xlSheet.Cells(3, J + 1) = rec.Fields(J).Name ' Nous appliquons des enrichissements de format aux cellules With xlSheet.Cells(3, J + 1) .Interior.ColorIndex = 15 .Interior.Pattern = xlSolid .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeBottom).ColorIndex = xlAutomatic .HorizontalAlignment = xlCenter End With Next J ' recopie des données à partir de la ligne 3 I = 4 Do While Not rec.EOF For J = 0 To rec.Fields.Count - 1 ' .Fields(Index).Type renvoie le type du champ ' si c'est un Texte (dbText) nous insérons "'" pour ' qu'il soit reconnu par Excel comme du Texte If rec.Fields(J).Type = dbText Then xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J) Else xlSheet.Cells(I, J + 1) = rec.Fields(J) End If Next J I = I + 1 rec.MoveNext Loop ' code de fermeture et libération des objets xlBook.SaveAs "C:\Users\Moi\Desktop\Nouveau dossier\Export.xlsx" xlApp.Quit rec.Close Set rec = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing t1 = Timer Debug.Print I & " enregistrements", Format(t1 - t0, "0") & " secondes" End Function
et le programme principale:
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 Private Sub ExportFeuille(xlSheet As Excel.Worksheet, rec As ADODB.Recordset) 'les entetes ' .Fields(Index).Name renvoie le nom du champ For J = 0 To rec.Fields.Count - 1 xlSheet.Cells(3, J + 1) = rec.Fields(J).Name ' Nous appliquons des enrichissements de format aux cellules With xlSheet.Cells(3, J + 1) .Interior.ColorIndex = 15 .Interior.Pattern = xlSolid .Borders(xlEdgeBottom).LineStyle = xlContinuous .Borders(xlEdgeBottom).Weight = xlThin .Borders(xlEdgeBottom).ColorIndex = xlAutomatic .HorizontalAlignment = xlCenter End With Next J ' recopie des données à partir de la ligne 3 I = 4 Do While Not rec.EOF For J = 0 To rec.Fields.Count - 1 ' .Fields(Index).Type renvoie le type du champ ' si c'est un Texte (dbText) nous insérons "'" pour ' qu'il soit reconnu par Excel comme du Texte If rec.Fields(J).Type = dbText Then xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J) Else xlSheet.Cells(I, J + 1) = rec.Fields(J) End If Next J I = I + 1 rec.MoveNext Loop End Sub
Au finish j'ai l'erreur suivant
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
74
75
76
77
78
79
80
81
82
83
84
85
86 Function TransfertExcelAutomation1(ByRef config() As Action) Dim xlApp As Excel.Application Dim xlSheet As Excel.Worksheet Dim xlBook As Excel.Workbook Dim I As Long, J As Long Dim t0 As Long, t1 As Long t0 = Timer Dim rec1, rec2, rec3, rec4 As Recordset 'Initialisations Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add 'Ajouter une feuille de calcul Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Tutor1" Set rec1 = CurrentDb.OpenRecordset("REJET_TRANCHES", dbOpenSnapshot) ' le titre1 ' écriture dans la cellule de ligne 1 et de colonne 1 xlSheet.Cells(1, 1) = "Première Structure des donées" ''''''''''''''''' ''''''''''''''''' Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Tutor2" Set rec2 = CurrentDb.OpenRecordset("REJET_SEM", dbOpenSnapshot) ' le titre2 ' écriture dans la cellule de ligne 1 et de colonne 1 xlSheet.Cells(1, 1) = "Deuxième Structure des donées" ''''''''''''''''' Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Tutor3" Set rec3 = CurrentDb.OpenRecordset("REJET_MOIS", dbOpenSnapshot) ' le titre3 ' écriture dans la cellule de ligne 1 et de colonne 1 xlSheet.Cells(1, 1) = " Troisième Structure des donées" ''''''''''''''''' Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Tutor4" Set rec4 = CurrentDb.OpenRecordset("TRANCHES_MOIS", dbOpenSnapshot) ' le titre4 ' écriture dans la cellule de ligne 1 et de colonne 1 xlSheet.Cells(1, 1) = "Quatrième Structure des donées" ''''''''''''''''' '''''''''''''''''' Call ExportFeuille(xlSheet1, rec1) Call ExportFeuille(xlSheet2, rec2) Call ExportFeuille(xlSheet3, rec3) Call ExportFeuille(xlSheet4, rec4) 'Call ExportFeuille(Tutor1, rec1) 'Call ExportFeuille(Tutor2, rec2) 'Call ExportFeuille(Tutor3, rec3) 'Call ExportFeuille(Tutor4, rec4) ' code de fermeture et libération des objets xlBook.SaveAs "C:\Users\Moi\Desktop\Nouveau dossier\Export.xlsx" xlApp.Quit rec1.Close rec2.Close rec3.Close rec4.Close Set rec = Nothing Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing t1 = Timer Debug.Print I & " enregistrements", Format(t1 - t0, "0") & " secondes" End Function
Type d'argument ByRef incompatible
Aidez moi SVP C'EST URGENT
Partager