1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| Sub WritingWorksheetData_DAO()
Dim Plage As Range
Dim Array1 As Variant
Dim x As Variant
Dim Db1 As Database
Dim Rs1 As Recordset
' Ouverture de la base de données Commandes.mdb
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\Commandes.mdb" )
' Ouverture de la table Factures
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset( "Factures" , dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set Plage = Worksheets( "DAOSheet" ).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 Factures
For x = 1 To UBound (Array1, 1 )
With Rs1
.AddNew
.Fields( "NoFacture" ) = Array1(x, 1 )
.Fields( "Client" ) = Array1(x, 2 )
.Fields( "Date" ) = Array1(x, 3 )
.Fields( "Solde" ) = Array1(x, 4 )
.Update
End With
Next
' Fermeture de la base Commandes.mdb
Db1.Close
' Effacement des données copiées vers la base (sauf les titres)
With Selection.CurrentRegion
Intersect(.Cells, .Offset( 1 )).Select
End With
Selection.ClearContents
End Sub |
Partager