Les structures des champs n'étant pas identiques, 1 ligne de code par champ s'impose.
Je vais tester votre méthode en espérant que le msg d'erreur n'apparaisse plus.
Je vous transmet le code simplifié que j'utilise actuellement pour le transfert des données, qui génère l'erreur "Aucun enregistrement en cours". Vous y verrez plus clair et découvrirez sans doute l'anomalie (je suis sûr qu'une instruction doit manquer)
Code:
'------------------------------------------------------------------------------------------------
'STEP 1 - Sélection et Importation brute (format txt) du contenu du fichier source
'------------------------------------------------------------------------------------------------
DoCmd.SetWarnings False
'Sélection du fichier source.
'Appel du complément (Ocx) - Microsoft Common Dialog Control 6.0 (comdlg32.ocx)
With SelectionFichier
.DialogTitle = "Sélectionnez le fichier à importer."
.Filename = "*.xls"
.initDir = "C:\Documents and Settings\Checchi Lorenzo\Mes documents\Bibliothèque\DEV_ACCESS\DEVELOPPEMENT_BDA\CLASSIFICATION\"
.CancelError = False
.ShowOpen
End With
chemin = SelectionFichier.Filename
txtpath = chemin
'Déclaration des variables table.
Dim rstTblTemp_1 As DAO.Recordset
Dim rstTblFinal As DAO.Recordset
'Déclaration des variables diverses.
Dim warm As Boolean
'On attache la table (Access) à la variable table
Set rstTblTemp_1 = CurrentDb.OpenRecordset("TblTemp_1", dbOpenDynaset)
Set rstTblFinal = CurrentDb.OpenRecordset("TblFinal", dbOpenDynaset)
'Mise à zéro de la variable warm (Permet la mise sous condition)
warm = False
'Importation du fichier xls dans la table TblTemp_1
If warm = False Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "TblTemp_1", txtpath, , , UseOA
End If
'Suppression des libellés contenus dans le fichier source
DoCmd.RunSQL "DELETE TblTemp_1.F1 FROM TblTemp_1 WHERE (((TblTemp_1.F1)='Ident'));"
'---------------------------------------------------------------------------------------------------------
'STEP 2 - Transfert des enregistrements dans la table TblFinal (formatage des données)
'---------------------------------------------------------------------------------------------------------
'Insertion des enregistrements dans la table TblFinal
With rstTblFinal
rstTblTemp_1.MoveFirst
With rstTblTemp_1
Do While Not rstTblTemp_1.EOF
rstTblFinal.AddNew
warm = False
rstTblFinal!Ident = rstTblTemp_1!F1
rstTblFinal!Label = rstTblTemp_1!F2
rstTblFinal!Currency = rstTblTemp_1!F3
rstTblFinal!Price = rstTblTemp_1!F4
rstTblFinal!Quantity = rstTblTemp_1!F5
rstTblFinal!Tch = rstTblTemp_1!F6
rstTblFinal.Update
rstTblTemp_1.MoveNext
Loop
End With
End With
Partager