Insérer des données dans un tableau Excel depuis Access 2007

maylouz Messages postés 35 Statut Membre -  
benol3 Messages postés 718 Statut Membre -
Bonjour à tous ,

Svp je voudrais insérer le résultat d'un recordset dans un tableau sur Excel en vba .

j'ai utilisé le code suivant mais cela ne marche pas ( je ne maîtrise pas les tableaux sous Excel , donc je ne sais pas si la syntaxe est bonne)

// Documents : Est le nom du Tableau et aussi le nom de la feuille


Dim objWkb As Excel.Workbook
Dim objSht As Excel.Worksheet
conWKB_NAME = Application.CurrentProject.Path & "\Doc_import.xlsx"

Set objWkb = .Workbooks.Open(conWKB_NAME)
Set objSht = objWkb.Worksheets("Documents")
Dim rs As DAO.Recordset

Set rs = CurrentDb.OpenRecordset("select id_livrable, version_Livrable from Livrables ", dbOpenSnapshot)

With objSht

rs.MoveFirst
While Not rs.EOF

.ListObjects("Documents").ListRows("Identifiant") = rs.fields("id_livrable")
.ListObjects("Documents").ListRows("version") = rs.fields("version_livrable")

rs.movenext
wend

End With


j'ai un message d'erreur : l'indice n'appartient pas à la sélection sur la première ligne d'insertion : .listObjects("documents").listeRows.........

le tableau Excel dispose bien d'un entête Identifiant et Version.

si Quelqu'un peut m'aider svp, je vous remercie d'avance.

1 réponse

  1. benol3 Messages postés 718 Statut Membre 87
     
    Salut,

    Voici un bout de code qui devrait fonctionner :

    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Dim rq As Recordset
    
    'appel du fichier excel
    Set appexcel = CreateObject("Excel.Application")
    'appexcel.Visible = True
    Set wbexcel = appexcel.Workbooks.Open(Application.CurrentProject.Path & "\Doc_import.xlsx")
    
    
    'appel feuille excel
    appexcel.Sheets("Documents").Select
    Set rq = CurrentDb.OpenRecordset("select id_livrable, version_Livrable from Livrables ", dbOpenSnapshot)
        
        If rq.RecordCount = 0 Then
            MsgBox "Il n'y a pas de données"
            Exit Sub
        Else
            appexcel.Sheets("Documents").Range("A2").CopyFromRecordset rq
            ' Copie tous les enregistrements de la requete dans le fichier excel
          rq.MoveFirst
        End If
    
    rq.Close: Set rq = Nothing
    
    'Affichage du fichier excel
    appexcel.Visible = True      
    
    
    0