OVH Cloud OVH Cloud

excel vers access

2 réponses
Avatar
Franck
Bonjour tout le monde,
je souhaite exporter des données de ma feuille excel ver une base access
j'arrive à creer la base puis la table mais lors de l'insertion des données
dans la table j'obtiens l'erreur suivante:
erreur 3061: trop peu de parametres 1. attendu

par tatonnements je pense avoir compris que l'erreur se situe lors d'ajout
de données de type texte

Quelqu'un peut il m'aider, svp
Merci





je cree la base sans probleme avec la sub suivante:

Sub CreateADatabase(vtDbName$)
Dim dbs As Database
Dim vtMessage$

On Error GoTo ErrorHandler


Set dbs = Workspaces(0).CreateDatabase(vtDbName & ".mdb", dbLangGeneral,
dbVersion30) Set dbs = Nothing

Exit Sub

ErrorHandler:

vtMessage = "Erreur lors de la creation de la base "
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

End Sub


et j'utilise la sub suivante pour creer la table et ajouter des données:


Sub CreateTableAndAddData()
Dim dbs As Database
Dim viCols%
Dim viRows%
Dim viCount%
Dim viRcount%
Dim vtWrapChar$
Dim vtSql$
Dim vtMessage$

On Error GoTo ErrorHandler

ThisWorkbook.Activate

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Open the database
Set dbs = OpenDatabase(ThisWorkbook.Path & "\" & ctDb)

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Go to the top left corner of the range
Application.GoTo reference:=Range("rtlData")


With ActiveCell.CurrentRegion
viCols = .Columns.Count
viRows = .Rows.Count
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -

On Error Resume Next
vtSql = ""
vtSql = vtSql & " DROP TABLE " & ctSheet
dbs.Execute vtSql
On Error GoTo ErrorHandler

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Create the table
'' Go to the top left cell in the current range
ActiveCell.CurrentRegion.Cells(1, 1).Select

vtSql = ""
vtSql = vtSql & " CREATE TABLE " & ctSheet & " ("

'' boucle sur chaque colonne pour creer code SQL
With ActiveCell.CurrentRegion
For viCount = 1 To viCols
vtSql = vtSql & .Cells(1, viCount) & "x " &
fGetCellFormat(.Cells(2, viCount))
If viCount <> viCols Then
vtSql = vtSql & ", "
Else
vtSql = vtSql & ")"
End If
Next
End With




dbs.Execute vtSql


'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Insertion des données dans la table
With ActiveCell.CurrentRegion
For viRcount = 2 To viRows

vtSql = ""
vtSql = vtSql & " INSERT INTO " & ctSheet
vtSql = vtSql & " VALUES ("

For viCount = 1 To viCols
Select Case fGetCellFormat(.Cells(2, viCount))
Case "TEXT"
vtWrapChar = "'" '<--------------je pense que cest
a ce niveau
Case "DATETIME"
vtWrapChar = "#"
Case Else
vtWrapChar = ""
End Select

vtSql = vtSql & vtWrapChar & .Cells(viRcount, viCount) &
vtWrapChar

If viCount <> viCols Then
vtSql = vtSql & ","
Else
vtSql = vtSql & ")"
End If
Next
Debug.Print vtSql
dbs.Execute vtSql
Next
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' fermeture
dbs.Close
Set dbs = Nothing

Exit Sub

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ErrorHandler:

vtMessage = "Erreur lors de la creation"
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

Resume lbTidy

End Sub

2 réponses

Avatar
Raymond [mvp]
Bonjour.

Si tu faisais un import d'une feuille excel à partir de Access, tu aurais
besoin de 1 ligne de code pour le faire. est-ce possible ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Franck" a écrit dans le message de
news:
Bonjour tout le monde,
je souhaite exporter des données de ma feuille excel ver une base access
j'arrive à creer la base puis la table mais lors de l'insertion des
données

dans la table j'obtiens l'erreur suivante:
erreur 3061: trop peu de parametres 1. attendu

par tatonnements je pense avoir compris que l'erreur se situe lors
d'ajout

de données de type texte

Quelqu'un peut il m'aider, svp
Merci





je cree la base sans probleme avec la sub suivante:

Sub CreateADatabase(vtDbName$)
Dim dbs As Database
Dim vtMessage$

On Error GoTo ErrorHandler


Set dbs = Workspaces(0).CreateDatabase(vtDbName & ".mdb",
dbLangGeneral,

dbVersion30) Set dbs = Nothing

Exit Sub

ErrorHandler:

vtMessage = "Erreur lors de la creation de la base "
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

End Sub


et j'utilise la sub suivante pour creer la table et ajouter des données:


Sub CreateTableAndAddData()
Dim dbs As Database
Dim viCols%
Dim viRows%
Dim viCount%
Dim viRcount%
Dim vtWrapChar$
Dim vtSql$
Dim vtMessage$

On Error GoTo ErrorHandler

ThisWorkbook.Activate

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Open the database
Set dbs = OpenDatabase(ThisWorkbook.Path & "" & ctDb)

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Go to the top left corner of the range
Application.GoTo reference:=Range("rtlData")


With ActiveCell.CurrentRegion
viCols = .Columns.Count
viRows = .Rows.Count
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -

On Error Resume Next
vtSql = ""
vtSql = vtSql & " DROP TABLE " & ctSheet
dbs.Execute vtSql
On Error GoTo ErrorHandler

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Create the table
'' Go to the top left cell in the current range
ActiveCell.CurrentRegion.Cells(1, 1).Select

vtSql = ""
vtSql = vtSql & " CREATE TABLE " & ctSheet & " ("

'' boucle sur chaque colonne pour creer code SQL
With ActiveCell.CurrentRegion
For viCount = 1 To viCols
vtSql = vtSql & .Cells(1, viCount) & "x " &
fGetCellFormat(.Cells(2, viCount))
If viCount <> viCols Then
vtSql = vtSql & ", "
Else
vtSql = vtSql & ")"
End If
Next
End With




dbs.Execute vtSql


'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Insertion des données dans la table
With ActiveCell.CurrentRegion
For viRcount = 2 To viRows

vtSql = ""
vtSql = vtSql & " INSERT INTO " & ctSheet
vtSql = vtSql & " VALUES ("

For viCount = 1 To viCols
Select Case fGetCellFormat(.Cells(2, viCount))
Case "TEXT"
vtWrapChar = "'" '<--------------je pense que
cest

a ce niveau
Case "DATETIME"
vtWrapChar = "#"
Case Else
vtWrapChar = ""
End Select

vtSql = vtSql & vtWrapChar & .Cells(viRcount, viCount) &
vtWrapChar

If viCount <> viCols Then
vtSql = vtSql & ","
Else
vtSql = vtSql & ")"
End If
Next
Debug.Print vtSql
dbs.Execute vtSql
Next
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' fermeture
dbs.Close
Set dbs = Nothing

Exit Sub

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ErrorHandler:

vtMessage = "Erreur lors de la creation"
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

Resume lbTidy

End Sub


























Avatar
Franck
Merci

Je suis d'accord qu'il suffirait de faire un import à partir d'acces, mais
mois je veux le faire en vba à partir d'excel
C'est tout la mon problème;

Merci


"Raymond [mvp]" a écrit dans le message de
news:%
Bonjour.

Si tu faisais un import d'une feuille excel à partir de Access, tu aurais
besoin de 1 ligne de code pour le faire. est-ce possible ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Franck" a écrit dans le message de
news:
Bonjour tout le monde,
je souhaite exporter des données de ma feuille excel ver une base access
j'arrive à creer la base puis la table mais lors de l'insertion des
données

dans la table j'obtiens l'erreur suivante:
erreur 3061: trop peu de parametres 1. attendu

par tatonnements je pense avoir compris que l'erreur se situe lors
d'ajout

de données de type texte

Quelqu'un peut il m'aider, svp
Merci





je cree la base sans probleme avec la sub suivante:

Sub CreateADatabase(vtDbName$)
Dim dbs As Database
Dim vtMessage$

On Error GoTo ErrorHandler


Set dbs = Workspaces(0).CreateDatabase(vtDbName & ".mdb",
dbLangGeneral,

dbVersion30) Set dbs = Nothing

Exit Sub

ErrorHandler:

vtMessage = "Erreur lors de la creation de la base "
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

End Sub


et j'utilise la sub suivante pour creer la table et ajouter des données:


Sub CreateTableAndAddData()
Dim dbs As Database
Dim viCols%
Dim viRows%
Dim viCount%
Dim viRcount%
Dim vtWrapChar$
Dim vtSql$
Dim vtMessage$

On Error GoTo ErrorHandler

ThisWorkbook.Activate

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Open the database
Set dbs = OpenDatabase(ThisWorkbook.Path & "" & ctDb)

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Go to the top left corner of the range
Application.GoTo reference:=Range("rtlData")


With ActiveCell.CurrentRegion
viCols = .Columns.Count
viRows = .Rows.Count
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -

On Error Resume Next
vtSql = ""
vtSql = vtSql & " DROP TABLE " & ctSheet
dbs.Execute vtSql
On Error GoTo ErrorHandler

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Create the table
'' Go to the top left cell in the current range
ActiveCell.CurrentRegion.Cells(1, 1).Select

vtSql = ""
vtSql = vtSql & " CREATE TABLE " & ctSheet & " ("

'' boucle sur chaque colonne pour creer code SQL
With ActiveCell.CurrentRegion
For viCount = 1 To viCols
vtSql = vtSql & .Cells(1, viCount) & "x " &
fGetCellFormat(.Cells(2, viCount))
If viCount <> viCols Then
vtSql = vtSql & ", "
Else
vtSql = vtSql & ")"
End If
Next
End With




dbs.Execute vtSql


'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' Insertion des données dans la table
With ActiveCell.CurrentRegion
For viRcount = 2 To viRows

vtSql = ""
vtSql = vtSql & " INSERT INTO " & ctSheet
vtSql = vtSql & " VALUES ("

For viCount = 1 To viCols
Select Case fGetCellFormat(.Cells(2, viCount))
Case "TEXT"
vtWrapChar = "'" '<--------------je pense que
cest

a ce niveau
Case "DATETIME"
vtWrapChar = "#"
Case Else
vtWrapChar = ""
End Select

vtSql = vtSql & vtWrapChar & .Cells(viRcount, viCount) &
vtWrapChar

If viCount <> viCols Then
vtSql = vtSql & ","
Else
vtSql = vtSql & ")"
End If
Next
Debug.Print vtSql
dbs.Execute vtSql
Next
End With

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
'' fermeture
dbs.Close
Set dbs = Nothing

Exit Sub

'' - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ErrorHandler:

vtMessage = "Erreur lors de la creation"
vtMessage = vtMessage & _
Chr(10) & _
Chr(10) & "Numero_Erreur : " & Err & _
Chr(10) & "Description: " & Error()

MsgBox vtMessage, vbInformation, ctByg

Resume lbTidy

End Sub