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 87
|
Sub Rapport()
'Déclaration des variables
Dim xlApp
Dim xlSheet
Dim xlBook
Dim db As database
Dim qry11 As QueryDef
Dim i As Long, j As Long, k As Long
Dim t0 As Long, t1 As Long
Dim parametre As String
Dim rec11 As DAO.Recordset
If IsNull(Forms![RechercheLiaison]![Texte66]) Then
MsgBox ("Veuillez renseigner une date")
Else
'Implémentation des variables
t0 = Timer
Set db = Application.CurrentDb
Set qry11 = db.QueryDefs("RequêteRapportRaccordés")
parametre = Forms![RechercheLiaison]![Texte66]
qry11.Parameters("PARAM_DATE").Value = parametre
Set rec11 = qry11.OpenRecordset
parametre = Replace(parametre, "/", "-")
'Initialisation
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
'Ajouter une feuille de calcul
Set xlSheet = xlBook.Worksheets.Add
xlSheet.Name = parametre
' le titre
' écriture dans la cellule de ligne 1 et de colonne 1
xlSheet.Cells(1, 1) = "Export d'une table Access, mise à jour le : " & parametre
xlApp.Visible = True
' les entetes
' .Fields(Index).Name renvoie le nom du champ
For j = 0 To rec11.Fields.Count - 1
xlSheet.Cells(3, j + 1) = rec11.Fields(j).Name
' Nous appliquons des enrichissements de format aux cellules
With xlSheet.Cells(3, j + 1)
.Interior.ColorIndex = 15
.Interior.Pattern = xlSolid
End With
Next j
' recopie des données à partir de la ligne 4
i = 4
Do While Not rec11.EOF
For j = 0 To rec11.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 rec11.Fields(j).Type = dbText Then
xlSheet.Cells(i, j + 1) = "'" & rec11.Fields(j)
Else
xlSheet.Cells(i, j + 1) = rec11.Fields(j)
End If
With xlSheet.Cells(i, j + 1)
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeLeft).Weight = xlThin
End With
Next j
i = i + 1
rec11.MoveNext
Loop
' code de fermeture et libération des objets
xlBook.SaveAs "RaccordésDepuisLe" & parametre & ".xlsx"
rec11.Close
Set rec11 = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
t1 = Timer
Debug.Print i & " enregistrements", Format(t1 - t0, "0") & " secondes"
End If
End Sub |
Partager