B
basma
Guest
Bonjour.
J'ai créé un petit tableau excel de 7 colonnes.
J'introduis une donnée dans chaque colonne.
J'exporte ces lignes dans une Table Access.
Mais, avec ma macro ( cfr ci-dessous ), je n'arrive pas à exporter les dernières lignes introduites. J'exporte toujours toutes les lignes.
Et il y a bien sûr des doublons.
==>> Comment faire pour ne pas reprendre ce qui a déjà été exporté ? n'exporter que les nouvelles lignes dans la table Access, sans effacer les données précédentes ?
Ma macro:
Sub XLAX()
'
' XLAX Macro
' Macro recorded 24/02/2006 by e1201
'
'Définition des éléments utilisés'
'- Base Access : Acces1.mdb'
'- Table Access : Récup Table '
'- 7 Champs Excel vers la Table Access : Nom requête, Département deman
deur,...'
'- Feuille Excel : Excel Data.xls'
'- Sheet Excel : Fiche'
Dim Plage As Range
Dim Array1 As Variant
Dim Db1 As Database
Dim Rs1 As Recordset
MsgBox ' lancer 1 fois la macro svp ! Merci ! '
' Ouverture de la base de données Acces1.mdb
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & '\\Acces1.mdb')
' Ouverture de la table Récup Table
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset('Récup Table', dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set Plage = Worksheets('Fiche').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 enregistrements de la t
able Récup Table
For x = 1 To UBound(Array1, 1)
With Rs1
.AddNew
.Fields('Nom requête') = Array1(x, 1)
.Fields('Département demandeur') = Array1(x, 2)
.Fields('Personne de contact') = Array1(x, 3)
.Fields('Départements impliqués') = Array1(x, 4)
.Fields('Date d'entrée de la requête') = Array1(x, 5)
.Fields('Description requête') = Array1(x, 6)
.Fields('N° requête') = Array1(x, 7)
.Update
End With
Next x
' Fermeture de la base Acces1.mdb
Db1.Close
MsgBox 'Game Over ! Well done, Forrest !'
'Sauvegarde'
ActiveWorkbook.Save
End Sub
J'espère être clair....
Si quelqu'un peut m'aider : MERCI !!!!!!!!!!!
J'ai créé un petit tableau excel de 7 colonnes.
J'introduis une donnée dans chaque colonne.
J'exporte ces lignes dans une Table Access.
Mais, avec ma macro ( cfr ci-dessous ), je n'arrive pas à exporter les dernières lignes introduites. J'exporte toujours toutes les lignes.
Et il y a bien sûr des doublons.
==>> Comment faire pour ne pas reprendre ce qui a déjà été exporté ? n'exporter que les nouvelles lignes dans la table Access, sans effacer les données précédentes ?
Ma macro:
Sub XLAX()
'
' XLAX Macro
' Macro recorded 24/02/2006 by e1201
'
'Définition des éléments utilisés'
'- Base Access : Acces1.mdb'
'- Table Access : Récup Table '
'- 7 Champs Excel vers la Table Access : Nom requête, Département deman
deur,...'
'- Feuille Excel : Excel Data.xls'
'- Sheet Excel : Fiche'
Dim Plage As Range
Dim Array1 As Variant
Dim Db1 As Database
Dim Rs1 As Recordset
MsgBox ' lancer 1 fois la macro svp ! Merci ! '
' Ouverture de la base de données Acces1.mdb
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & '\\Acces1.mdb')
' Ouverture de la table Récup Table
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset('Récup Table', dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set Plage = Worksheets('Fiche').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 enregistrements de la t
able Récup Table
For x = 1 To UBound(Array1, 1)
With Rs1
.AddNew
.Fields('Nom requête') = Array1(x, 1)
.Fields('Département demandeur') = Array1(x, 2)
.Fields('Personne de contact') = Array1(x, 3)
.Fields('Départements impliqués') = Array1(x, 4)
.Fields('Date d'entrée de la requête') = Array1(x, 5)
.Fields('Description requête') = Array1(x, 6)
.Fields('N° requête') = Array1(x, 7)
.Update
End With
Next x
' Fermeture de la base Acces1.mdb
Db1.Close
MsgBox 'Game Over ! Well done, Forrest !'
'Sauvegarde'
ActiveWorkbook.Save
End Sub
J'espère être clair....
Si quelqu'un peut m'aider : MERCI !!!!!!!!!!!