Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
JCM was thinking very hard :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
bonjour,
Adox oui, vb6 oui, ouvrir une feuille excel dans une table Access NON.
Peut être voulez-vous dire que celle-ci est stockée dans un record
d'une table? Pouvez rectifier l'énoncée de votre problème, svp.
Pour une référence sur l'adox voir dans ce même forum les technopoches
de microsoft.
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM was thinking very hard :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
bonjour,
Adox oui, vb6 oui, ouvrir une feuille excel dans une table Access NON.
Peut être voulez-vous dire que celle-ci est stockée dans un record
d'une table? Pouvez rectifier l'énoncée de votre problème, svp.
Pour une référence sur l'adox voir dans ce même forum les technopoches
de microsoft.
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM was thinking very hard :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
bonjour,
Adox oui, vb6 oui, ouvrir une feuille excel dans une table Access NON.
Peut être voulez-vous dire que celle-ci est stockée dans un record
d'une table? Pouvez rectifier l'énoncée de votre problème, svp.
Pour une référence sur l'adox voir dans ce même forum les technopoches
de microsoft.
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
Bonjour
Je voudrais convertir une feuille Excell dans une table Access avec VB6 et
ADOX.
Je n'ai rien trouvé comme exemple dans le FAQ
Pourriez-vous me dire ou il me faut chercher ou tout simplement
pourriez-vous me donner un bout de code
Merci d'avance
Cordialement
JCM
JCM formulated on Wednesday :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
Re,
Voici un exemple, très basic (manque une bonne gestion d'erreur, ...).
Utilisez les références à l'adox, l'ado, commondialog.
Créez une forme principal (frmMain) avec un commondialog (cmdlgMain) et
un commonbutton (cmdMakeData), et collez le code ci-dessous dans la
forme principale.
Option Explicit
Private Sub cmdMakeData_Click()
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Dim cat As ADOX.Catalog
Dim key As ADOX.key
Dim strFileNameExcel As String
Dim strFileNameAccess As String
On Error GoTo Error_cmdMakeData_Click
'------------------------------------------------------------
'Création du fichier Excel.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.xls"
cmdlgMain.DialogTitle = "Open MS Excel file"
cmdlgMain.Filter = "MS Excel *.Xls|*.xls"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.ShowSave
Me.MousePointer = vbHourglass
strFileNameExcel = cmdlgMain.FileName
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameExcel) = "") Then Exit Sub
If (Dir(strFileNameExcel) <> "") Then
Kill strFileNameExcel
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & strFileNameExcel & ";" & "Extended Properties=Excel 8.0;"
Set tbl = New ADOX.Table
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Excel.
'------------------------------------------------------------
Me.MousePointer = vbDefault
'------------------------------------------------------------
'Création du fichier Access.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.mdb"
cmdlgMain.DialogTitle = "Open MS Access File"
cmdlgMain.Filter = "MS Access *.Mdb|*.mdb"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.FileName = ""
cmdlgMain.ShowSave
strFileNameAccess = cmdlgMain.FileName
Me.MousePointer = vbHourglass
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameAccess) = "") Then Exit Sub
If (Dir(strFileNameAccess) <> "") Then
Kill strFileNameAccess
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
strFileNameAccess
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
'------------------------------------------------------------
' Attention, le formatage n'est pas pris en compte (date du type :
mm/dd/yyyy)
' et il peut y avoir une confussion lors de l'export vers MS Access
(du type 11/12/yyyy et 12/11/yyyy).
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
'------------------------------------------------------------
' Definir une clé primaire sur la table
Set key = New ADOX.key
key.Name = "ClePrimaire"
key.Type = adKeyPrimary
key.RelatedTable = "personnes"
key.Columns.Append "nom"
'------------------------------------------------------------
' Ajouter la clé à la table
tbl.Keys.Append key
Set key = Nothing
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Access.
'------------------------------------------------------------
'------------------------------------------------------------
'insertion de données dans le fichier Excel pour test.
'------------------------------------------------------------
Dim objConExcel As ADODB.Connection
Set objConExcel = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
.Execute "insert into personnes
values('VanDenPlace','Robert','square de la
.Execute "insert into personnes values('Gontrant','Julien','Rue
du
pont','2','1070','bruxelles','Belgique','24/1/1984','Mons','Belgique');"
.Execute "insert into personnes
values('Malbert','Jacques','Boulevard du
.Close
End With
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Exportation des données du fichier Excel vers la base de donnée
Access.
'-----------------------------------------------------------------------
Dim objRsExcel As ADODB.Recordset
Dim objRsAccess As ADODB.Recordset
Dim objConAcces As ADODB.Connection
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = "personnes"
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc")
If Not objRsExcel Is Nothing Then
If Not objRsExcel.BOF And Not objRsExcel.EOF Then
Do While Not objRsExcel.EOF
With objRsAccess
.AddNew
.Fields.Item("nom").Value > objRsExcel.Fields.Item("nom").Value
.Fields.Item("Prenom").Value > objRsExcel.Fields.Item("Prenom").Value
.Fields.Item("Adresse").Value > objRsExcel.Fields.Item("Adresse").Value
.Fields.Item("Numero").Value > objRsExcel.Fields.Item("Numero").Value
.Fields.Item("CodePostal").Value > objRsExcel.Fields.Item("CodePostal").Value
.Fields.Item("Ville").Value > objRsExcel.Fields.Item("Ville").Value
.Fields.Item("Pays").Value > objRsExcel.Fields.Item("Pays").Value
.Fields.Item("DateNaissance").Value > objRsExcel.Fields.Item("DateNaissance").Value
.Fields.Item("VilleNaissance").Value > objRsExcel.Fields.Item("VilleNaissance").Value
.Fields.Item("PaysNaissance").Value > objRsExcel.Fields.Item("PaysNaissance").Value
.Update
objRsExcel.MoveNext
End With
Loop
End If
End If
objRsExcel.Close
objRsAccess.Close
Set objRsExcel = Nothing
Set objRsAccess = Nothing
objConAcces.Close
Set objConAcces = Nothing
objConExcel.Close
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Fin de l'exportation des données.
'-----------------------------------------------------------------------
Me.MousePointer = vbDefault
Exit Sub
Error_cmdMakeData_Click:
MsgBox "Erreur n° : " & CStr(Err.Number) & vbCrLf & "Description :
" & Err.Description, vbCritical + vbOKOnly, "Erreur."
Exit Sub
Resume
End Sub
Private Sub MakeColumn(ByVal strColName As String, ByRef objTb As
ADOX.Table, ByVal enmType As DataTypeEnum)
Dim col As ADOX.Column
Set col = New ADOX.Column
With col
.Name = strColName
.Type = enmType
End With
objTb.Columns.Append col
Set col = Nothing
End Sub
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM formulated on Wednesday :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
Re,
Voici un exemple, très basic (manque une bonne gestion d'erreur, ...).
Utilisez les références à l'adox, l'ado, commondialog.
Créez une forme principal (frmMain) avec un commondialog (cmdlgMain) et
un commonbutton (cmdMakeData), et collez le code ci-dessous dans la
forme principale.
Option Explicit
Private Sub cmdMakeData_Click()
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Dim cat As ADOX.Catalog
Dim key As ADOX.key
Dim strFileNameExcel As String
Dim strFileNameAccess As String
On Error GoTo Error_cmdMakeData_Click
'------------------------------------------------------------
'Création du fichier Excel.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.xls"
cmdlgMain.DialogTitle = "Open MS Excel file"
cmdlgMain.Filter = "MS Excel *.Xls|*.xls"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.ShowSave
Me.MousePointer = vbHourglass
strFileNameExcel = cmdlgMain.FileName
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameExcel) = "") Then Exit Sub
If (Dir(strFileNameExcel) <> "") Then
Kill strFileNameExcel
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & strFileNameExcel & ";" & "Extended Properties=Excel 8.0;"
Set tbl = New ADOX.Table
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Excel.
'------------------------------------------------------------
Me.MousePointer = vbDefault
'------------------------------------------------------------
'Création du fichier Access.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.mdb"
cmdlgMain.DialogTitle = "Open MS Access File"
cmdlgMain.Filter = "MS Access *.Mdb|*.mdb"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.FileName = ""
cmdlgMain.ShowSave
strFileNameAccess = cmdlgMain.FileName
Me.MousePointer = vbHourglass
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameAccess) = "") Then Exit Sub
If (Dir(strFileNameAccess) <> "") Then
Kill strFileNameAccess
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
strFileNameAccess
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
'------------------------------------------------------------
' Attention, le formatage n'est pas pris en compte (date du type :
mm/dd/yyyy)
' et il peut y avoir une confussion lors de l'export vers MS Access
(du type 11/12/yyyy et 12/11/yyyy).
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
'------------------------------------------------------------
' Definir une clé primaire sur la table
Set key = New ADOX.key
key.Name = "ClePrimaire"
key.Type = adKeyPrimary
key.RelatedTable = "personnes"
key.Columns.Append "nom"
'------------------------------------------------------------
' Ajouter la clé à la table
tbl.Keys.Append key
Set key = Nothing
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Access.
'------------------------------------------------------------
'------------------------------------------------------------
'insertion de données dans le fichier Excel pour test.
'------------------------------------------------------------
Dim objConExcel As ADODB.Connection
Set objConExcel = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
.Execute "insert into personnes
values('VanDenPlace','Robert','square de la
.Execute "insert into personnes values('Gontrant','Julien','Rue
du
pont','2','1070','bruxelles','Belgique','24/1/1984','Mons','Belgique');"
.Execute "insert into personnes
values('Malbert','Jacques','Boulevard du
.Close
End With
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Exportation des données du fichier Excel vers la base de donnée
Access.
'-----------------------------------------------------------------------
Dim objRsExcel As ADODB.Recordset
Dim objRsAccess As ADODB.Recordset
Dim objConAcces As ADODB.Connection
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = "personnes"
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc")
If Not objRsExcel Is Nothing Then
If Not objRsExcel.BOF And Not objRsExcel.EOF Then
Do While Not objRsExcel.EOF
With objRsAccess
.AddNew
.Fields.Item("nom").Value > objRsExcel.Fields.Item("nom").Value
.Fields.Item("Prenom").Value > objRsExcel.Fields.Item("Prenom").Value
.Fields.Item("Adresse").Value > objRsExcel.Fields.Item("Adresse").Value
.Fields.Item("Numero").Value > objRsExcel.Fields.Item("Numero").Value
.Fields.Item("CodePostal").Value > objRsExcel.Fields.Item("CodePostal").Value
.Fields.Item("Ville").Value > objRsExcel.Fields.Item("Ville").Value
.Fields.Item("Pays").Value > objRsExcel.Fields.Item("Pays").Value
.Fields.Item("DateNaissance").Value > objRsExcel.Fields.Item("DateNaissance").Value
.Fields.Item("VilleNaissance").Value > objRsExcel.Fields.Item("VilleNaissance").Value
.Fields.Item("PaysNaissance").Value > objRsExcel.Fields.Item("PaysNaissance").Value
.Update
objRsExcel.MoveNext
End With
Loop
End If
End If
objRsExcel.Close
objRsAccess.Close
Set objRsExcel = Nothing
Set objRsAccess = Nothing
objConAcces.Close
Set objConAcces = Nothing
objConExcel.Close
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Fin de l'exportation des données.
'-----------------------------------------------------------------------
Me.MousePointer = vbDefault
Exit Sub
Error_cmdMakeData_Click:
MsgBox "Erreur n° : " & CStr(Err.Number) & vbCrLf & "Description :
" & Err.Description, vbCritical + vbOKOnly, "Erreur."
Exit Sub
Resume
End Sub
Private Sub MakeColumn(ByVal strColName As String, ByRef objTb As
ADOX.Table, ByVal enmType As DataTypeEnum)
Dim col As ADOX.Column
Set col = New ADOX.Column
With col
.Name = strColName
.Type = enmType
End With
objTb.Columns.Append col
Set col = Nothing
End Sub
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM formulated on Wednesday :
> Bonjour
>
> Je voudrais convertir une feuille Excell dans une table Access avec VB6
> ADOX.
> Je n'ai rien trouvé comme exemple dans le FAQ
> Pourriez-vous me dire ou il me faut chercher ou tout simplement
> pourriez-vous me donner un bout de code
>
> Merci d'avance
> Cordialement
> JCM
Re,
Voici un exemple, très basic (manque une bonne gestion d'erreur, ...).
Utilisez les références à l'adox, l'ado, commondialog.
Créez une forme principal (frmMain) avec un commondialog (cmdlgMain) et
un commonbutton (cmdMakeData), et collez le code ci-dessous dans la
forme principale.
Option Explicit
Private Sub cmdMakeData_Click()
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Dim cat As ADOX.Catalog
Dim key As ADOX.key
Dim strFileNameExcel As String
Dim strFileNameAccess As String
On Error GoTo Error_cmdMakeData_Click
'------------------------------------------------------------
'Création du fichier Excel.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.xls"
cmdlgMain.DialogTitle = "Open MS Excel file"
cmdlgMain.Filter = "MS Excel *.Xls|*.xls"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.ShowSave
Me.MousePointer = vbHourglass
strFileNameExcel = cmdlgMain.FileName
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameExcel) = "") Then Exit Sub
If (Dir(strFileNameExcel) <> "") Then
Kill strFileNameExcel
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=" & strFileNameExcel & ";" & "Extended Properties=Excel 8.0;"
Set tbl = New ADOX.Table
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Excel.
'------------------------------------------------------------
Me.MousePointer = vbDefault
'------------------------------------------------------------
'Création du fichier Access.
'------------------------------------------------------------
'Selection du fichier.
cmdlgMain.DefaultExt = "*.mdb"
cmdlgMain.DialogTitle = "Open MS Access File"
cmdlgMain.Filter = "MS Access *.Mdb|*.mdb"
cmdlgMain.Flags = cdlOFNHideReadOnly + cdlOFNOverwritePrompt +
cdlOFNPathMustExist
cmdlgMain.FileName = ""
cmdlgMain.ShowSave
strFileNameAccess = cmdlgMain.FileName
Me.MousePointer = vbHourglass
'------------------------------------------------------------
' Test d'existance du fichier
If (Trim(strFileNameAccess) = "") Then Exit Sub
If (Dir(strFileNameAccess) <> "") Then
Kill strFileNameAccess
End If
'------------------------------------------------------------
'Création éffective du fichier
Set tbl = New ADOX.Table
Set cat = New ADOX.Catalog
cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
strFileNameAccess
tbl.Name = "Personnes"
MakeColumn "Nom", tbl, adVarWChar
MakeColumn "Prenom", tbl, adVarWChar
MakeColumn "Adresse", tbl, adVarWChar
MakeColumn "Numero", tbl, adVarWChar
MakeColumn "CodePostal", tbl, adVarWChar
MakeColumn "Ville", tbl, adVarWChar
MakeColumn "Pays", tbl, adVarWChar
'------------------------------------------------------------
' Attention, le formatage n'est pas pris en compte (date du type :
mm/dd/yyyy)
' et il peut y avoir une confussion lors de l'export vers MS Access
(du type 11/12/yyyy et 12/11/yyyy).
MakeColumn "DateNaissance", tbl, adDate
MakeColumn "VilleNaissance", tbl, adVarWChar
MakeColumn "PaysNaissance", tbl, adVarWChar
cat.Tables.Append tbl
'------------------------------------------------------------
' Definir une clé primaire sur la table
Set key = New ADOX.key
key.Name = "ClePrimaire"
key.Type = adKeyPrimary
key.RelatedTable = "personnes"
key.Columns.Append "nom"
'------------------------------------------------------------
' Ajouter la clé à la table
tbl.Keys.Append key
Set key = Nothing
Set tbl = Nothing
Set cat = Nothing
'------------------------------------------------------------
'Fin création du fichier Access.
'------------------------------------------------------------
'------------------------------------------------------------
'insertion de données dans le fichier Excel pour test.
'------------------------------------------------------------
Dim objConExcel As ADODB.Connection
Set objConExcel = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
.Execute "insert into personnes
values('VanDenPlace','Robert','square de la
.Execute "insert into personnes values('Gontrant','Julien','Rue
du
pont','2','1070','bruxelles','Belgique','24/1/1984','Mons','Belgique');"
.Execute "insert into personnes
values('Malbert','Jacques','Boulevard du
.Close
End With
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Exportation des données du fichier Excel vers la base de donnée
Access.
'-----------------------------------------------------------------------
Dim objRsExcel As ADODB.Recordset
Dim objRsAccess As ADODB.Recordset
Dim objConAcces As ADODB.Connection
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = "personnes"
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc")
If Not objRsExcel Is Nothing Then
If Not objRsExcel.BOF And Not objRsExcel.EOF Then
Do While Not objRsExcel.EOF
With objRsAccess
.AddNew
.Fields.Item("nom").Value > objRsExcel.Fields.Item("nom").Value
.Fields.Item("Prenom").Value > objRsExcel.Fields.Item("Prenom").Value
.Fields.Item("Adresse").Value > objRsExcel.Fields.Item("Adresse").Value
.Fields.Item("Numero").Value > objRsExcel.Fields.Item("Numero").Value
.Fields.Item("CodePostal").Value > objRsExcel.Fields.Item("CodePostal").Value
.Fields.Item("Ville").Value > objRsExcel.Fields.Item("Ville").Value
.Fields.Item("Pays").Value > objRsExcel.Fields.Item("Pays").Value
.Fields.Item("DateNaissance").Value > objRsExcel.Fields.Item("DateNaissance").Value
.Fields.Item("VilleNaissance").Value > objRsExcel.Fields.Item("VilleNaissance").Value
.Fields.Item("PaysNaissance").Value > objRsExcel.Fields.Item("PaysNaissance").Value
.Update
objRsExcel.MoveNext
End With
Loop
End If
End If
objRsExcel.Close
objRsAccess.Close
Set objRsExcel = Nothing
Set objRsAccess = Nothing
objConAcces.Close
Set objConAcces = Nothing
objConExcel.Close
Set objConExcel = Nothing
'-----------------------------------------------------------------------
'Fin de l'exportation des données.
'-----------------------------------------------------------------------
Me.MousePointer = vbDefault
Exit Sub
Error_cmdMakeData_Click:
MsgBox "Erreur n° : " & CStr(Err.Number) & vbCrLf & "Description :
" & Err.Description, vbCritical + vbOKOnly, "Erreur."
Exit Sub
Resume
End Sub
Private Sub MakeColumn(ByVal strColName As String, ByRef objTb As
ADOX.Table, ByVal enmType As DataTypeEnum)
Dim col As ADOX.Column
Set col = New ADOX.Column
With col
.Name = strColName
.Type = enmType
End With
objTb.Columns.Append col
Set col = Nothing
End Sub
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
ligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
ligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
ligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
JCM presented the following explanation :
> Bonjour Quasimodo
>
> Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
> pouvez-vous me confirmer :
> dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUI
> dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
> by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cette
> ligne : connection échouée
>
> dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
> le préciser dans la requete et comment ?
>
> Merci pour vos réponses
> Cordialement
> JCM
>
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM presented the following explanation :
> Bonjour Quasimodo
>
> Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
> pouvez-vous me confirmer :
> dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUI
> dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
> by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cette
> ligne : connection échouée
>
> dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
> le préciser dans la requete et comment ?
>
> Merci pour vos réponses
> Cordialement
> JCM
>
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
JCM presented the following explanation :
> Bonjour Quasimodo
>
> Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
> pouvez-vous me confirmer :
> dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUI
> dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
> by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cette
> ligne : connection échouée
>
> dans mon classeur excell le transfert est à partir de la feuille 1, faut-il
> le préciser dans la requete et comment ?
>
> Merci pour vos réponses
> Cordialement
> JCM
>
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
ReBonjour
Je ne comprends pas dans cette partie de code :
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = TableName
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from LAZONE")
Cela Beug sur Set objRsExcell avec le message : le moteru de base de données
n'a pas pu trouver l'objet LAZONE
Pourtant mon classeur s'appelle LAZONE.xls et la feuille LAZONE et le chemin
est bon
Cordialement
JCM
"Quasimodo" a écrit :JCM presented the following explanation :Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUIdans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cetteligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1,
faut-il le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
ReBonjour
Je ne comprends pas dans cette partie de code :
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = TableName
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from LAZONE")
Cela Beug sur Set objRsExcell avec le message : le moteru de base de données
n'a pas pu trouver l'objet LAZONE
Pourtant mon classeur s'appelle LAZONE.xls et la feuille LAZONE et le chemin
est bon
Cordialement
JCM
"Quasimodo" a écrit :
JCM presented the following explanation :
Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUI
dans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cette
ligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1,
faut-il le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
ReBonjour
Je ne comprends pas dans cette partie de code :
Set objConExcel = New ADODB.Connection
Set objConAcces = New ADODB.Connection
With objConExcel
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open strFileNameExcel
End With
With objConAcces
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Data Source").Value = strFileNameAccess
.Open
End With
Set objRsAccess = New ADODB.Recordset
objRsAccess.CursorLocation = adUseClient
objRsAccess.CursorType = adOpenKeyset
objRsAccess.Source = TableName
objRsAccess.LockType = adLockOptimistic
Set objRsAccess.ActiveConnection = objConAcces
objRsAccess.Open
Set objRsExcel = objConExcel.Execute("select * from LAZONE")
Cela Beug sur Set objRsExcell avec le message : le moteru de base de données
n'a pas pu trouver l'objet LAZONE
Pourtant mon classeur s'appelle LAZONE.xls et la feuille LAZONE et le chemin
est bon
Cordialement
JCM
"Quasimodo" a écrit :JCM presented the following explanation :Bonjour Quasimodo
Merci pour ce code que j'ai adapté à mon appli, néanmoins j'ai un beug
pouvez-vous me confirmer :
dans : objRsAccess.Source = "personnes" il s'agit de la table access ?
OUIdans : Set objRsExcel = objConExcel.Execute("select * from personnes order
by nom asc") personnes est la classeur excell ?
Non, c'est la feuille.
car le beug est sur cetteligne : connection échouée
dans mon classeur excell le transfert est à partir de la feuille 1,
faut-il le préciser dans la requete et comment ?
Merci pour vos réponses
Cordialement
JCM
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com