Ordre faussé dans la restitution du recordset

matsony Messages postés 7 Date d'inscription dimanche 1 février 2004 Statut Membre Dernière intervention 9 juillet 2004 - 26 mai 2004 à 18:32
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 26 mai 2004 à 20:10
bonjour forum,
je souhaite transférer des enregistrements d'une table access vers excel.
jusque là tout marche mais les enregistrements ne sont pas recopiés dans excel dans l'ordre de la table.
Pour être plus précis le 2e enregistrement vient en premier et le premier enregistrement vient en dernier.

le code pour info:

Function access_vers_excel()
On Error GoTo GestionErreurs

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim DBA As Database
Dim Enreg As Recordset
Dim ligne As Long
Dim chemin, base As String
Dim RetVal, intMaxCol
chemin = "D:\bdd"
base = "test.mdb"
Set DBA = OpenDatabase(chemin + base)
Set Enreg = CurrentDb.OpenRecordset("export", dbOpenTable)

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim oXlApp As Object 'Excel.Application
Dim oXlWbk As Object 'Excel.Workbook
Dim trouve As Boolean
Dim nom As String
Set oXlApp = CreateObject("Excel.Application")
Set oXlWbk = oXlApp.Workbooks.Open("D:\bdd\classeur.xls")
oXlWbk.worksheets("donnees").Select
oXlWbk.worksheets("donnees").Range("A:K").ClearContents
oXlApp.Visible = True
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Enreg.MoveFirst
ligne = 1
Enreg.MoveFirst
Do While Enreg.EOF = False
oXlWbk.worksheets("donnees").Cells(ligne, 1) = Enreg!Date
oXlWbk.worksheets("donnees").Cells(ligne, 5) = Enreg!Appli
oXlWbk.worksheets("donnees").Cells(ligne, 2) = Enreg!Dispo
oXlWbk.worksheets("donnees").Cells(ligne, 3) = Enreg!Indispo
ligne = ligne + 1
Enreg.MoveNext
Loop
oXlWbk.Save
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each oXlWbk In oXlApp.Workbooks
nom = oXlWbk.Name
If nom = "classeur.xls" Then
trouve = True
oXlWbk.Close
End If
Next oXlWbk
oXlApp.Quit
Set oXlWbk = Nothing
Set oXlApp = Nothing

GestionErreurs:
'MsgBox (Err.Number)
Set oXlWbk = Nothing
Set oXlApp = Nothing
End Function

1 réponse

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
26 mai 2004 à 20:10
Salut matsony,

A priori, je ne vois pas où est le pb mais je n'ai pas testé ton code. Mais j'ai un bout de code que j'ai utilisé pour faire justement des transfert d'access vers excel. Je ne sais plus qui est le 1er auteur, s'il se reconnait, qu'il se manifeste. Je l'ai juste un modifié et ça marche impec. Si ça peut te servir......

'
' Export access >> excel
'
' Ne pas oublier de cocher les références dans Pojet
' Microsoft Access et Microsoft DAO
'
'
Private Sub Command1_Click()
Dim db As Database
Dim rq_SQL As String
Dim obj_Access As Access.Application
Dim Nom_Base_Access As String
Dim Nom_Fichier_Excel As String
Dim Nom_Requete As String

Nom_Fichier_Excel = "c:\test\classeur1.xls"
Nom_Base_Access = "c:\test\bd1.mdb"
Nom_Requete = "Transfert_Vers_Excel"

' Définition de la base de données
Set db = OpenDatabase(Nom_Base_Access)

' Création de la requète temporaire
rq_SQL = "select * from table1"
db.CreateQueryDef Nom_Requete, rq_SQL

' Création d'un objet Access
Set obj_Access = New Access.Application

' Ouverture de la base Access
obj_Access.OpenCurrentDatabase Nom_Base_Access

' Exportation de la requete vers un fichier excel
' ATTENTION : si le fichier Excel existe, il est écrasé !
' S'il n'existe pas, il est créé
obj_Access.DoCmd.TransferSpreadsheet acExport, , Nom_Requete, Nom_Fichier_Excel

' Fermeture de la base
obj_Access.Quit acQuitSaveNone

' Libération de la mémoire
Set obj_Access = Nothing

' Effacement de la requete temporaire
db.QueryDefs.Delete Nom_Requete

End Sub

Cordialement

CanisLupus
0
Rejoignez-nous