OVH Cloud OVH Cloud

Export Access dans un nouvel onglet d'Excel

1 réponse
Avatar
Dan
Bonjour à tous,
Je voudrais exporter le résultat d'une requête Access dans un fichier Excel.
L'export fonctionne à condition que le classeur Excel n'existe pas, sinon
j'obtiens une erreur.
Dans le classeur Excel, j'ai des procédures qui fonctionnent à l'ouverture
du classeur pour :
- adapter la mise en page
- positionner des filtres
- faire des calculs
...
Il faut donc que je garde ce classeur. L'idéal serait que j'exporte sous un
autre onglet pour récupérer les données dans mon onglet de traitement par la
suite.
Merci d'avance pour vos idées
Dan

Ci-dessous mon code actuel :
Dim strFichierDestination As String

Private Sub Btn_ExportExcel_Click()
On Error GoTo Err_Btn_Export_Excel_Click

Dim strDbPath As String, strDbFile As String
Dim CurrentDbDir As String

Dim strNomTable As String
strNomTable = "Rq_Programmation" 'Nom de la table à exporter

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
CurrentDbDir = Left(strDbPath, Len(strDbPath) - (Len(strDbFile) + 1))

'Création de l'adresse du fichier de destination
strFichierDestination = CurrentDbDir & "\" & strNomTable & ".xls"


'Exportation de la table
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
strNomTable, strFichierDestination
DoCmd.SetWarnings True

Call OuvrirFichierExcel_Click

Exit_Btn_Export_Excel_Click:
Exit Sub

Err_Btn_Export_Excel_Click:
MsgBox Err.Description
Resume Exit_Btn_Export_Excel_Click
End Sub




Private Sub OuvrirFichierExcel_Click()
On Error GoTo Err_OuvrirFichierExcel_Click
Dim oApp As Object

Set oApp = CreateObject("Excel.Application")
oApp.Visible = True

oApp.Workbooks.Open strFichierDestination

On Error Resume Next
oApp.UserControl = True

Exit_OuvrirFichierExcel_Click:
Exit Sub

Err_OuvrirFichierExcel_Click:
MsgBox Err.Description
Resume Exit_OuvrirFichierExcel_Click
End Sub

1 réponse

Avatar
Dan
Je me réponds à moi-même car j'ai trouvé la réponse donnée par Raymond
quelques questions plus bas :
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strNomTable, _
strFichierDestination, True, "Export"
Le nom de l'onglet est Export. Il est créé automatiquement s'il n'existe pas
mais je suis obligé de le supprimer dans mon cas pour que les prochaines
données exportées ne soient pas mélangées aux précédentes.
J'effectue donc la suppression de l'onglet Export directement sous Excel
après avoir récupéré les données contenues dans cet onglet.
Tout se fait automatiquement à l'ouverture du classeur Excel. On ne voit
donc même pas apparaître l'onglet Export.



Bonjour à tous,
Je voudrais exporter le résultat d'une requête Access dans un fichier Excel.
L'export fonctionne à condition que le classeur Excel n'existe pas, sinon
j'obtiens une erreur.
Dans le classeur Excel, j'ai des procédures qui fonctionnent à l'ouverture
du classeur pour :
- adapter la mise en page
- positionner des filtres
- faire des calculs
...
Il faut donc que je garde ce classeur. L'idéal serait que j'exporte sous un
autre onglet pour récupérer les données dans mon onglet de traitement par la
suite.
Merci d'avance pour vos idées
Dan

Ci-dessous mon code actuel :
Dim strFichierDestination As String

Private Sub Btn_ExportExcel_Click()
On Error GoTo Err_Btn_Export_Excel_Click

Dim strDbPath As String, strDbFile As String
Dim CurrentDbDir As String

Dim strNomTable As String
strNomTable = "Rq_Programmation" 'Nom de la table à exporter

strDbPath = CurrentDb.Name
strDbFile = Dir(strDbPath)
CurrentDbDir = Left(strDbPath, Len(strDbPath) - (Len(strDbFile) + 1))

'Création de l'adresse du fichier de destination
strFichierDestination = CurrentDbDir & "" & strNomTable & ".xls"


'Exportation de la table
DoCmd.SetWarnings False
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
strNomTable, strFichierDestination
DoCmd.SetWarnings True

Call OuvrirFichierExcel_Click

Exit_Btn_Export_Excel_Click:
Exit Sub

Err_Btn_Export_Excel_Click:
MsgBox Err.Description
Resume Exit_Btn_Export_Excel_Click
End Sub




Private Sub OuvrirFichierExcel_Click()
On Error GoTo Err_OuvrirFichierExcel_Click
Dim oApp As Object

Set oApp = CreateObject("Excel.Application")
oApp.Visible = True

oApp.Workbooks.Open strFichierDestination

On Error Resume Next
oApp.UserControl = True

Exit_OuvrirFichierExcel_Click:
Exit Sub

Err_OuvrirFichierExcel_Click:
MsgBox Err.Description
Resume Exit_OuvrirFichierExcel_Click
End Sub