je souhaite exporter des données Excel vers une table existante Access à
l'aide du code ci-dessous. Mais je reçois une erreur lorsqu'un des champs est
vide. J'ai essayé de mettre les champs en NOT NULL mais cela ne change rien.
Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
Dim DBPath As String
DBPath = "J:\bdd.mdb"
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & DBPath & ";"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "INSTRUMENT", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 5 ' the start row in the worksheet
Do While Len(Range("B" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("Instrument_id") = Range("B" & r).Value
.Fields("Name") = Range("C" & r).Value
.Fields("ShortName") = Range("D" & r).Value
.Fields("MasterInstrument_id") = Range("E" & r).Value
.Fields("Instrument_Type") = Range("F" & r).Value
.Fields("Share_Classe") = Range("G" & r).Value
.Fields("Series") = Range("H" & r).Value
.Fields("Currency_id") = Range("I" & r).Value
.Fields("Flag") = Range("J" & r).Value
.Fields("Management_fee") = Range("K" & r).Value
.Fields("Administration_fee") = Range("L" & r).Value
.Fields("Otherfee_x") = Range("M" & r).Value
.Fields("Performance_fee") = Range("N" & r).Value
.Fields("Hurdle_Rate") = Range("O" & r).Value
.Fields("High_Watermark") = Range("P" & r).Value
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pounet95
Bonsoir, Justement, à part la ou les clés de la table, ne serait pas plutôt à NULL autorisé qu'il faudrait mettre les champs de la table ? A tout hasard, je ne suis ni spécialiste d'Access, ni d'Excel ;o((
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Laurent M" a écrit dans le message de news:
Bonjour,
je souhaite exporter des données Excel vers une table existante Access à l'aide du code ci-dessous. Mais je reçois une erreur lorsqu'un des champs est vide. J'ai essayé de mettre les champs en NOT NULL mais cela ne change rien.
Sub ADOFromExcelToAccess() ' exports data from the active worksheet to a table in an Access database ' this procedure must be edited before use Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long Dim DBPath As String
DBPath = "J:bdd.mdb"
' connect to the Access database Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=" & DBPath & ";" ' open a recordset Set rs = New ADODB.Recordset rs.Open "INSTRUMENT", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all records in a table r = 5 ' the start row in the worksheet Do While Len(Range("B" & r).Formula) > 0 ' repeat until first empty cell in column A With rs .AddNew ' create a new record ' add values to each field in the record .Fields("Instrument_id") = Range("B" & r).Value .Fields("Name") = Range("C" & r).Value .Fields("ShortName") = Range("D" & r).Value .Fields("MasterInstrument_id") = Range("E" & r).Value .Fields("Instrument_Type") = Range("F" & r).Value .Fields("Share_Classe") = Range("G" & r).Value .Fields("Series") = Range("H" & r).Value .Fields("Currency_id") = Range("I" & r).Value .Fields("Flag") = Range("J" & r).Value .Fields("Management_fee") = Range("K" & r).Value .Fields("Administration_fee") = Range("L" & r).Value .Fields("Otherfee_x") = Range("M" & r).Value .Fields("Performance_fee") = Range("N" & r).Value .Fields("Hurdle_Rate") = Range("O" & r).Value .Fields("High_Watermark") = Range("P" & r).Value .Update ' stores the new record End With r = r + 1 ' next row Loop rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
Merci !
Bonsoir,
Justement, à part la ou les clés de la table, ne serait pas plutôt à NULL
autorisé qu'il faudrait mettre les champs de la table ?
A tout hasard, je ne suis ni spécialiste d'Access, ni d'Excel ;o((
--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
"Laurent M" <LaurentM@discussions.microsoft.com> a écrit dans le message de
news: 9924C199-AB17-457D-9F95-D2370CD88412@microsoft.com...
Bonjour,
je souhaite exporter des données Excel vers une table existante Access à
l'aide du code ci-dessous. Mais je reçois une erreur lorsqu'un des champs
est
vide. J'ai essayé de mettre les champs en NOT NULL mais cela ne change
rien.
Sub ADOFromExcelToAccess()
' exports data from the active worksheet to a table in an Access database
' this procedure must be edited before use
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
Dim DBPath As String
DBPath = "J:bdd.mdb"
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & DBPath & ";"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "INSTRUMENT", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
r = 5 ' the start row in the worksheet
Do While Len(Range("B" & r).Formula) > 0
' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("Instrument_id") = Range("B" & r).Value
.Fields("Name") = Range("C" & r).Value
.Fields("ShortName") = Range("D" & r).Value
.Fields("MasterInstrument_id") = Range("E" & r).Value
.Fields("Instrument_Type") = Range("F" & r).Value
.Fields("Share_Classe") = Range("G" & r).Value
.Fields("Series") = Range("H" & r).Value
.Fields("Currency_id") = Range("I" & r).Value
.Fields("Flag") = Range("J" & r).Value
.Fields("Management_fee") = Range("K" & r).Value
.Fields("Administration_fee") = Range("L" & r).Value
.Fields("Otherfee_x") = Range("M" & r).Value
.Fields("Performance_fee") = Range("N" & r).Value
.Fields("Hurdle_Rate") = Range("O" & r).Value
.Fields("High_Watermark") = Range("P" & r).Value
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Bonsoir, Justement, à part la ou les clés de la table, ne serait pas plutôt à NULL autorisé qu'il faudrait mettre les champs de la table ? A tout hasard, je ne suis ni spécialiste d'Access, ni d'Excel ;o((
-- Pounet95 on trouve tout ( ou presque ) http://www.excelabo.net/
"Laurent M" a écrit dans le message de news:
Bonjour,
je souhaite exporter des données Excel vers une table existante Access à l'aide du code ci-dessous. Mais je reçois une erreur lorsqu'un des champs est vide. J'ai essayé de mettre les champs en NOT NULL mais cela ne change rien.
Sub ADOFromExcelToAccess() ' exports data from the active worksheet to a table in an Access database ' this procedure must be edited before use Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long Dim DBPath As String
DBPath = "J:bdd.mdb"
' connect to the Access database Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & _ "Data Source=" & DBPath & ";" ' open a recordset Set rs = New ADODB.Recordset rs.Open "INSTRUMENT", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all records in a table r = 5 ' the start row in the worksheet Do While Len(Range("B" & r).Formula) > 0 ' repeat until first empty cell in column A With rs .AddNew ' create a new record ' add values to each field in the record .Fields("Instrument_id") = Range("B" & r).Value .Fields("Name") = Range("C" & r).Value .Fields("ShortName") = Range("D" & r).Value .Fields("MasterInstrument_id") = Range("E" & r).Value .Fields("Instrument_Type") = Range("F" & r).Value .Fields("Share_Classe") = Range("G" & r).Value .Fields("Series") = Range("H" & r).Value .Fields("Currency_id") = Range("I" & r).Value .Fields("Flag") = Range("J" & r).Value .Fields("Management_fee") = Range("K" & r).Value .Fields("Administration_fee") = Range("L" & r).Value .Fields("Otherfee_x") = Range("M" & r).Value .Fields("Performance_fee") = Range("N" & r).Value .Fields("Hurdle_Rate") = Range("O" & r).Value .Fields("High_Watermark") = Range("P" & r).Value .Update ' stores the new record End With r = r + 1 ' next row Loop rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub
Merci !
Laurent M
en fait pour faire ce que je voulais j'ai mis avant chaque ligne : si (case non vide) alors field = valeur de la case
en fait pour faire ce que je voulais j'ai mis avant chaque ligne :
si (case non vide) alors field = valeur de la case