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
Pierre CFI [mvp]
bonjour
il faut que le format d'une colonne soit bien identique sur chaque ligne (pas de date dans une cellule et du texte dans la cellule
dessous
selectionne chaque colonne les unes aprés les autres et formate

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"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 pour la réponse

J'ai vérifié, et je me trouve bien dans la configuration que tu décris,
pourtant le message apparait toujours.
J'ai remarqué aussi que si j'enleve les colonnes contenant des données texte
ça fonctionne alors est ce que c'est pas un problème d'accent ' ou " qu'il
faut utiliser

Merci



"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
il faut que le format d'une colonne soit bien identique sur chaque ligne
(pas de date dans une cellule et du texte dans la cellule

dessous
selectionne chaque colonne les unes aprés les autres et formate