Code vba export access vers excel

Résolu
maw -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour à tous :)

J'ai un souci je suis plus que novice en vb et je cherche à exporter successivement mes ^résultats de requêtes access dans un classeur comment excel mais sur différentes feuilles, j'ai fouiner un peu partout et j'ai réussi à constituer un petit code pour ma première requête pour tester avant de tout faire et clairement il ne fonctionne pas, serait il possible que vous y jetiez un oeil n'il vous plaît?

Merci d'avance de m'accorder un peu de votre temps


Option Compare Database 
Option Explicit 


'------------------------------------------------------------ 
' Export 
' 
'------------------------------------------------------------ 


  
Private Sub TransfertExportExcel_Click() 
Dim xlapp As Object 
Dim acapp As Object 
Dim query As Object 
Set xlapp = CreateObject("Excel.Application") 
Set acapp = CurrentDb() 
Set query = acapp.OpenRecordset("export_absences") 
xlapp.workbooks.Open filename("chemin") 
xlapp.sheets("absences").range("a1:bo65536").select 
selection.copy 
query.copy 
xlapp.activeworkbook.Close 
xlapp.quitt 
Set xlapp = Nothing 




MsgBox "export réalisé avec succès =)", vbInformation, "" 
 End Sub 
  


4 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Un peu plus simple

    Cette ligne de code permet de transférer une table ou requête ACCESS vers une Feuille d'un Classeur EXCEL.

    ex:
    Private Sub Commande5_Click()
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "Table ou Requête ACCESS a transférer", "Chemin du fichier EXCEL", , "Nom de la Feuille EXCEL"
    end sub
    Bonne continuation
    4
    1. maw
       
      j ai déjà essayé ce code et en fait la précision de la feuille ne fonctionne que pour l'import de feuilles excel sur access, pas pour l'export mais merci beaucoup quand même
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Tu peux exporter les données sans avoir à ouvrir Excel. En utilisant le fournisseur OLE DB Microsoft Jet. Il ne faut pas oublier de cocher la référence Microsoft ActiveX Data Objects x.x Library

    Il faut modifier ta procédure:

    Private Sub TransfertExportExcel_Click() 
    Dim xlapp As Object 
    Dim acapp As Object 
    Dim query As Object 
    Dim XLCnx As ADODB.Connection
    Dim XLRst As ADODB.Recordset
    Dim monClasseur As String
    Dim maFeuille As String
    
    On Error Resume Next
    
    monClasseur = "chemin"  'Ton chemin d'accès (ex: C:\Temp\MonClasseur.xls)
    MaFeuille = "absences"
    
    Set xlapp = CreateObject("Excel.Application") 
    Set acapp = CurrentDb() 
    Set query = acapp.OpenRecordset("export_absences") 
    
    'Connection au classeur Excel
        Set XLCnx = New ADODB.Connection
        XLCnx.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & NomClasseur & ";" & _
                       "Extended Properties=""Excel 8.0;HDR=NO;"""
    
    'Ouverture du recordset
    Set XLRst = New ADODB.Recordset
        XLRst.Open "Select * from " & maFeuille, XLCnx, adOpenKeyset, adLockOptimistic
            
        'transfert les données Access vers le classeur Excel
        Do While Not (query .EOF)
                XLRst.AddNew
                    For j = 0 To XLRst.Fields.Count - 1
                        XLRst.Fields(j) = query.Fields(j).Value
                    Next j
                XLRst.Update
                query.MoveNext
        Loop
    
    XLCnx.Close
    XLRst.Close
    query.Close
    
    Set xlapp = Nothing 
    Set acapp = Nothing
    Set query = Nothing
    Set XLCnx = Noting
    Set XLRst = Nothing
    
    If Err.Number <> 0 Then
       MsgBox Err.Number & " - " & Err.Description, vbCritical, "Erreur !!!"
    Else
       MsgBox "export réalisé avec succès =)", vbInformation, "" 
    End If
    
     End Sub


    ;o)
    3
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    voir ce tuto
    Et surtout pas oublier d'ajouter la référence.
    A+
    2