Toun a écrit :
Voila , j'ai programmé une application VBA pour inserer des champs d'une feuille de calcul Excel dans une base de donnée Access. Mais j'ai un petit pb, il insere une seule ligne correctement, ensuite, il plante au niveau du second update. Et voici l'erreur qu'il me met: "Erreur d'execution '3022'
Erreur definie par l'application ou par l'objet"
et vu les erreurs floues de VBA, je ne comprend pas trop ce qui se passe!!!
Voici mon petit bout de programme:
Sub WritingWorksheetData_DAO()
Dim Plage As Range
Dim Array1 As Variant
Dim x As Variant
Dim Db1 As Database
Dim Rs1 As Recordset
Dim num As Integer
num = 0
' Ouverture de la base de données Essai_base_produit.mdb
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\Essai_base_produit.mdb" )
' Ouverture de la table commande
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset("produit", dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set Plage = Worksheets("europrices" ).Range("A1" ).CurrentRegion.Offset(1, 0)
Set Plage = Plage.Resize(Plage.Rows.Count - 1, Plage.Columns.Count)
Plage.Select
' Lecture de la plage pour renvoyer une valeur contenant un tableau
Array1 = Plage.Value
' Ecriture des données depuis Excel vers les enregistrement de la table commande
For x = 1 To UBound(Array1, 1)
With Rs1
.AddNew
.Fields("Numéro" ) = num + 1
.Fields("Nom" ) = Array1(x, 3)
.Fields("CAS Number" ) = Array1(x, 1)
.Fields("Fournisseur" ) = "Avocado"
.Fields("Product code" ) = Array1(x, 2)
.Fields("Quality" ) = Array1(x, 10)
.Fields("Molecular weight" ) = Array1(x, 11)
.Fields("Molecular formula" ) = Array1(x, 12)
.Update
End With
Next
' Fermeture de la base Essai_base_produit.mdb
Essai_base_produit.Close
End Sub
|