Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:6ED91B05-54F4-4325-8536-5370E90B539F@microsoft.com...
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" <anonymous@discussions.microsoft.com> a écrit dans le message de
news:6ED91B05-54F4-4325-8536-5370E90B539F@microsoft.com...
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de direction
pour que j'arrive à mes fins ...
Salut,
pour compléter Michdenis...
J'utilise une feuille "maj" avec dans la feuille de la base de données
(j'ai
adapté à l'exemple)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
Dim plValidite As Range
Set plValidite = Range("A1").CurrentRegion
If Not Intersect(Target, plValidite) Is Nothing Then
With Target
For r = .Cells(1).Row To .Cells(.Cells.Count).Row
Sheets("maj").Cells(r, 1).Value = CDbl(Date) * 84600 +
Timer
Next r
End With
End If
End Sub
En B1 la trace de la dernière mise à jour
la procédure de Michdenis devient :
Option Explicit
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
Dim Tblr As Variant, RgMaj As Range 'ajout *************
Dim maj As Double 'ajout *************
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
Set RgMaj = .Range(Range("A1"), Range("A65536")).End(xlUp) 'ajout
*************
End With
Tblo = Rg
Tblr = RgMaj 'ajout *************
maj = Sheets("maj").Range("B1").Value 'ajout *************
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
If Tblr(a) < maj Then Exit For 'ajout *************
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
Sheets("maj").Range("B1").Value = CDbl(Date) * 84600 + Timer 'ajout
*************
End Sub
'-----------------------------------------------
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"michdenis" a écrit dans le message de news:Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton
projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu cochesdans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta
base
de données .mdbLe nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au typede données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tudois utiliser une structure de if ..then .. pour tester la présence
d'une
donnée sinon la procédure ne vas pas beaucoupapprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas êtrevide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message
de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou unautre fichier excel de façon à ce que uniquement les données rajoutées
ou
modifiées sont exportées.Comment y parvenir ? Si vous avez des cailloux ou un panneau de
direction
pour que j'arrive à mes fins ...
Salut,
pour compléter Michdenis...
J'utilise une feuille "maj" avec dans la feuille de la base de données
(j'ai
adapté à l'exemple)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
Dim plValidite As Range
Set plValidite = Range("A1").CurrentRegion
If Not Intersect(Target, plValidite) Is Nothing Then
With Target
For r = .Cells(1).Row To .Cells(.Cells.Count).Row
Sheets("maj").Cells(r, 1).Value = CDbl(Date) * 84600 +
Timer
Next r
End With
End If
End Sub
En B1 la trace de la dernière mise à jour
la procédure de Michdenis devient :
Option Explicit
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
Dim Tblr As Variant, RgMaj As Range 'ajout *************
Dim maj As Double 'ajout *************
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
Set RgMaj = .Range(Range("A1"), Range("A65536")).End(xlUp) 'ajout
*************
End With
Tblo = Rg
Tblr = RgMaj 'ajout *************
maj = Sheets("maj").Range("B1").Value 'ajout *************
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
If Tblr(a) < maj Then Exit For 'ajout *************
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
Sheets("maj").Range("B1").Value = CDbl(Date) * 84600 + Timer 'ajout
*************
End Sub
'-----------------------------------------------
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
OKFMfwXQEHA.2452@TK2MSFTNGP11.phx.gbl...
Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton
projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu coches
dans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta
base
de données .mdb
Le nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au type
de données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tu
dois utiliser une structure de if ..then .. pour tester la présence
d'une
donnée sinon la procédure ne vas pas beaucoup
apprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas être
vide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" <anonymous@discussions.microsoft.com> a écrit dans le message
de
news:6ED91B05-54F4-4325-8536-5370E90B539F@microsoft.com...
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou un
autre fichier excel de façon à ce que uniquement les données rajoutées
ou
modifiées sont exportées.
Comment y parvenir ? Si vous avez des cailloux ou un panneau de
direction
pour que j'arrive à mes fins ...
Salut,
pour compléter Michdenis...
J'utilise une feuille "maj" avec dans la feuille de la base de données
(j'ai
adapté à l'exemple)
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
Dim plValidite As Range
Set plValidite = Range("A1").CurrentRegion
If Not Intersect(Target, plValidite) Is Nothing Then
With Target
For r = .Cells(1).Row To .Cells(.Cells.Count).Row
Sheets("maj").Cells(r, 1).Value = CDbl(Date) * 84600 +
Timer
Next r
End With
End If
End Sub
En B1 la trace de la dernière mise à jour
la procédure de Michdenis devient :
Option Explicit
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
Dim Tblr As Variant, RgMaj As Range 'ajout *************
Dim maj As Double 'ajout *************
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
Set RgMaj = .Range(Range("A1"), Range("A65536")).End(xlUp) 'ajout
*************
End With
Tblo = Rg
Tblr = RgMaj 'ajout *************
maj = Sheets("maj").Range("B1").Value 'ajout *************
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
If Tblr(a) < maj Then Exit For 'ajout *************
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
Sheets("maj").Range("B1").Value = CDbl(Date) * 84600 + Timer 'ajout
*************
End Sub
'-----------------------------------------------
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"michdenis" a écrit dans le message de news:Bonjour sharmi,
Voici un exemple en utilisant ADO( activex data object)
A ) tu dois ajouter à ton projet excel, la référence suivante à ton
projet
Pour ce faire , à partir de la fenêtre VBE(visual basic editor) /
barre des menus / outils / références et tu cochesdans la liste déroulant :
"Microsoft activex data object 2.0 librairy"
B ) dans l'exemple suivant, tu devras adapter le nom et chemin de ta
base
de données .mdbLe nom de table ( fournisseurs dans mon exemple)
C ) Attention, le type de données dans tes champs Excel que tu exportes
dans ta table (mdb) doit être compatible au typede données de tes champs Access
D ) Si tu as dans tes champs de ta table excel, des champs qui n'ont pas
de valeurs dans certains enregistrements, tudois utiliser une structure de if ..then .. pour tester la présence
d'une
donnée sinon la procédure ne vas pas beaucoupapprécier.
E ) Si ta table contient des restrictions pour fin de validation d'un
enregistrement ( comme un champ ne peut pas êtrevide ) , cela doit aussi être respecté ...
Amuse-toi bien !!
Salutations!
'------------------------------------------
Sub MaRequêteAvecADO()
Dim cnt As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim Req As String
Dim Tblo As Variant, Rg As Range
With Worksheets("Denis")
Set Rg = .Range("A1").CurrentRegion
End With
Tblo = Rg
cnt.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Mes DocumentsComptoir.mdb;" & _
"Jet OLEDB:Database Password=", "admin", ""
Rst.Open "Fournisseurs", cnt, adOpenKeyset, _
adLockOptimistic, adCmdTable
For a = 2 To UBound(Tblo, 1)
With Rst
.AddNew
!Société = Tblo(a, 1)
![Fonction] = Tblo(a, 2)
![Contact] = Tblo(a, 3)
!Adresse = Tblo(a, 4)
!Ville = Tblo(a, 5)
If Tblo(a, 6) <> "" Then
!Région = Tblo(a, 6)
End If
![Code postal] = Tblo(a, 7)
![Pays] = Tblo(a, 8)
If Tblo(a, 9) <> "" Then
![Téléphone] = Tblo(a, 9)
End If
If Tblo(a, 10) <> "" Then
![Fax] = Tblo(a, 10)
End If
.Update
End With
Next
Rst.Close: cnt.Close
Set Rst = Nothing: Set Conn = Nothing
End Sub
'-----------------------------------------------
"sharmi" a écrit dans le message
de
news:
Bonjour,
Je travaille avec des données sous Excel et je souhaite automatiser
l'exportation des données vers une base access ou unautre fichier excel de façon à ce que uniquement les données rajoutées
ou
modifiées sont exportées.Comment y parvenir ? Si vous avez des cailloux ou un panneau de
direction
pour que j'arrive à mes fins ...