huinu87
Messages postés1Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention26 avril 2013 17 nov. 2011 à 10:34
merci pour ce code j lé utilisé mais le problème que ma table est toujours vide après le transféré de l'EXCEL.
Quoi faire? voici mon code:
Option Compare Database
Private Sub impotation_du_fichier_Click()
Dim PathFic As String
Dim NomFic As String
Dim NomFicXLS As String
Dim NomTable As String
Dim code_article As Integer
Dim libelle_article As String
Dim prix_vente As Integer
Dim prix_achat As Integer
Dim stock As Integer
Dim i As Integer
Dim sql As String
Set dbs = CurrentDb
Set ClasseurXLS = CreateObject("Excel.application")
'Initialisation Nom du fichier à importer
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xlsx"
'NomFic = "tablesStock.xlsx"
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Emplacement du fichier à importer
If (Text2.Value <> "") Then
PathFic = Text2
Else
réponse = MsgBox("Emplacement du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Nom de la table d'importation
If (Text3.Value <> "") Then
NomTable = Text3
Else
réponse = MsgBox("Nom de la table d'importation manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open PathFic & NomFic
'Creation d'une table d'importation
sql = "CREATE TABLE table_provisoire(icodearticle integer, ilibellearticle string, iprixv integer, iprixacht integer, istock integer)"
dbs.Execute sql
i = 2
Do While ClasseurXLS.Cells(i, 1) <> ""
ClasseurXLS.Workbooks.Close
MsgBox ("Importation des données effectuée")
End Sub
gwaheb
Messages postés9Date d'inscriptionjeudi 15 mai 2008StatutMembreDernière intervention18 juin 2011 18 juin 2011 à 01:26
bonnjour moi j'ai justement pas envie qu'il yai une creation de table sous access pour le faire
j'ai crée tte ma base de donnée avec les clé primaire et les relation
et dans l'une des table je veux importer une 3 colonne de excel vers le 3 colonne de meme champ sous access
avec une mise a jour des donnée sous access a chaque fois que cela se fai sous excel
cs_Famas54
Messages postés59Date d'inscriptionmardi 12 septembre 2006StatutMembreDernière intervention21 août 20092 24 juil. 2009 à 09:56
Ce code fonctionne trés bien, il est flexible et permet de faire pas mal de choses (pas besoin de créer une table pour l'importation depuis Excel par exemple), de sélectionner uniquement les colonnes utiles, le problème étant que si vous avez besoin d'un fichier Excel utilisant plusieurs onglets, il n'est pas possible de parcourir les différents onglets et il faut donc splitter le fichier en plusieurs morceaux.
cs_andrymajor
Messages postés1Date d'inscriptionlundi 20 février 2006StatutMembreDernière intervention 8 mai 2008 8 mai 2008 à 15:56
Merci bcp! le code m'es très utile pour mon travail!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 4 juil. 2007 à 11:23
remplace simplement
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
par
NomFic = "Agriculture.xls"
vu que ton nom est en dur...
cs_NaniNina
Messages postés1Date d'inscriptionmardi 3 juillet 2007StatutMembreDernière intervention 4 juillet 2007 4 juil. 2007 à 11:18
Bonjour,
j'ai essayé le code et ça ne fonctionne pas, et ce dès le début:
'Initialisation Nom du fichier à importer
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
j'ai remplacé Text1.value par:
If (Agriculture.Value <> "") Then
le nom du fichier à importer étant agriculture.xls,
Et ça me dit qu'un objet est requis, que agriculture.value est vide.
je ne comprend pas trop l'erreur, déjà je ne vois pas à quoi correspond "Text1.Value".
Pourriez vous m'aider?
Merci
Selune6666
Messages postés59Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention14 janvier 2008 2 mai 2007 à 11:39
bonjour j'ai un léger problème.
Voila j'utilise ce code pour importer ma table excel dans ma table access.
Le chemin du fichier a ouvrir je le récupere grace a une boite de dialogue windows qui me permet de choisir le fichier a importer.
Ce chemin s'affiche dans une textbox que j'ai appelé URL
d'ou mon code ,
Private Sub Commande3_Click()
Dim Nom as string
.
.
.
Set dbs = CurrentDB
Set ClasseurXLS = Createobject("Excel.application")
If (URL.value<>"") then
Nom=URL
else
msgbox"URL du ficier blablabla...."
exit sub
end if
ClasseurXLS.workbooks.Open Nom
Et la problème il me dit:
erreur 1004
la méthode open de la classe workbooks a échoué.
Je precise que Nom prend bien la valeur situé dans la texte box nommé URL étant donné que quand elle n'est pas remplie il affiche la Msgbox
Je ne sais pas comment régler ce problème pouvez vous m'éclairer?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 1 déc. 2006 à 15:04
tu as dû oublier les références...
wise_dot
Messages postés1Date d'inscriptionmercredi 30 août 2006StatutMembreDernière intervention 1 décembre 2006 1 déc. 2006 à 15:02
Bonjour,
j'ai essayé ton code,mais un message d'erreur est signalé
le voila
"Informations supplémentaires : L'opérateur n'est pas valide pour type 'Range' et chaîne ""."
des idées?
voila le code que j'ai utilisé
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim iNom_emp(,) As String
'Titre
OpenFileDialog1.Title = "Chargement"
'Extension par défaut
OpenFileDialog1.DefaultExt = "xls"
'Filtres
OpenFileDialog1.Filter = "fichiers excels(*.xls)|*.xls"
OpenFileDialog1.FilterIndex = 1
'Ouverture boite de dialogue OpenFile
If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
TextBox2.Text() = OpenFileDialog1.FileName
End If
Dim fichier_excel As String
fichier_excel = TextBox2.Text.Substring(TextBox2.Text.LastIndexOf("") + 1)
ClasseurXLS = CreateObject("Excel.application")
'Ouverture du classeur d'importation
Try
ClasseurXLS.Workbooks.Open(TextBox2.Text)
Catch ex As Exception
MsgBox("erreur")
End Try
Dim i As Integer
i = 2
Dim a As String
Do While ClasseurXLS.cells(i, 1) <> ""
'Recuperation des données lignes par lignes
iNom_emp(i, 0) = ClasseurXLS.cells(i, 1)
iNom_emp(i, 1) = ClasseurXLS.cells(i, 2)
iNom_emp(i, 2) = ClasseurXLS.cells(i, 3)
iNom_emp(i, 3) = ClasseurXLS.cells(i, 4)
iNom_emp(i, 4) = ClasseurXLS.cells(i, 5)
iNom_emp(i, 5) = ClasseurXLS.cells(i, 6)
'Insertion des données dans la table
i = i + 1
Loop
End Sub
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 12 mars 2006 à 09:34
Si tu veux que ta table soit mise à jour à chaque ouverture de ton application Access ou à chaque fois que tu appuies sur un bouton:
*Il existe une commande TransfertSpreadSheet qui permet de créer une table access à partir d'une feuille excel. Pour faire une mise à jour, il suffit donc de supprimer l'ancienne table Access et de la remplacer par la table créer
doCmd.TransfertSpreadSheet acImport,,"Table Access","C:\toto.xls",true ainsi tu auras toujours la dernière mise à jour.
* Ou alors tu supprimes toutes les lignes de la table
Delete * from table; et tu inséres les nouvelles à partir de la feuille excel en listant chaque ligne de ton fichier excel et en faisant un Insert into Table value ('" & ClasseurXLS(1,1) & "'," & ...) , par exemple en testant la cellule de ta clé primaire à chaque ligne. Si elle est vide, tu arrêtes de boucler...
N'oublies pas de faire référence à Microsoft Excel 10.0 library
adil_ista
Messages postés30Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention25 octobre 2006 12 mars 2006 à 02:23
Je voudrais imorter une feuil excel sur acces et trouver toujours dernier mise a jour chez access , je cherche ca pour mon stage,je voulais soit par code en vb.net soit par autre chose
si possible je serais content de ca
rachidos001
Messages postés44Date d'inscriptionmardi 12 avril 2005StatutMembreDernière intervention23 mars 2006 29 août 2005 à 00:31
merci de m'informer sur la methode d'importer les donnee d'une base access vers excel
guyonstephane
Messages postés2Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention15 février 2005 15 févr. 2005 à 23:20
Merci,
Ah oui, là je n'étais pas du tout dans le coup.
Merci
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 15 févr. 2005 à 20:08
CurrentDb veut dire qu'on utilise la base de donnée en cours. Pour utiliser cette fonction, il faut biensur mettre la référence Microsoft DAO 3.6 ou autre...
guyonstephane
Messages postés2Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention15 février 2005 15 févr. 2005 à 00:45
Salut,
J'ai essayé ton code mais je n'y arrive pas
set dbs=CurrentDB ça plante
cela veut dire quoi ?
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 7 sept. 2004 à 09:45
Voici une solution, pour le cas où l'on voudrait uniquement créer une table à partir d'un fichier Excel:
NomTable => Nom de la table a créer
PathFic => "C:\Excel"
NomFic => "Fichier.xls"
valeryht
Messages postés6Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention 6 septembre 2004 6 sept. 2004 à 17:50
super ton code
g eu le mm pb avec
sql = "create table " & NomTable & "(Nom_Emp string, DateJ date, Num_affaire integer, Num_phase integer, Nb_heures integer, Commentaire string)"
mais je ne voulais que passer les données en access ma table etait deja creer
j'ai un autre pb
voila g une Colonne dans ma table nommée Nom_Client qui stocke le nom des clients mais j'ai des clients de format nom *************(******) quand je lance mon app elle commence à faire l'importation mais dès qu'elle trouve un nom de client de ce format me sort une erreur
erreur syntaxe (operateur abscent) dans l'expression "*************(*********'
alors le nom du client avec des ()
je t'envoie le code pour que tu puisse jté un coup d'oeil
Option Explicit
Public ClasseurXLS As Object
Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Public Sub connection_bd()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=C:\WINDOWS\Desktop\Livraison\Delivery.mdb"
cn.Open
If cn.State = adStateOpen Then
MsgBox "connection etablie"
Else
MsgBox "connection echouee"
End If
End Sub
Private Sub Cmd_Importation_Click()
Dim PathFic As String
Dim NomFic As String
Dim NomFicXLS As String
Dim NomTable As String
Dim iCode_Client As String
Dim iNom_Client As Variant
Dim iCode_Facture As String
Dim iMontant_Facture As Currency
Dim iNum_Bureau As Integer
Dim i As Integer
Dim iType_Recu As String
Dim sql As String
Dim iDate_Transac As Date
With cn
Set ClasseurXLS = CreateObject("Excel.application")
'Initialisation Nom du fichier à importer
If (Text1.Text <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
Else
MsgBox ("Nom du fichier à importer manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Initialisation Emplacement du fichier à importer
If (Text2.Text <> "") Then
PathFic = Text2
Else
MsgBox ("Emplacement du fichier à importer manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Initialisation Nom de la table d'importation
If (Text3.Text <> "") Then
NomTable = Text3
Else
MsgBox ("Nom de la table d'importation manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open "C:\windows\Desktop\Livraison\Factures.xls" '& NomFic
'Creation d'une table d'importation
'sql = "create table "&FACRTURE1&"(ID as autoNumber, Code_Facture as string, Code_Client as String, Nom_Client as string, Montant_Facture as double,Num_Bureau as Integer,Type_Recu as String,Date_Transact as date, Commentaire string)"
'dbs.Execute sql
i = 2
Do While ClasseurXLS.cells(i, 1) <> ""
'Recuperation des données lignes par lignes
iDate_Transac = ClasseurXLS.cells(i, 1)
iCode_Facture = ClasseurXLS.cells(i, 2)
iCode_Client = ClasseurXLS.cells(i, 3)
iNom_Client = ClasseurXLS.cells(i, 4)
iMontant_Facture = ClasseurXLS.cells(i, 5)
iNum_Bureau = ClasseurXLS.cells(i, 6)
iType_Recu = ClasseurXLS.cells(i, 7)
cn.Execute sql
i = i + 1
Loop
End With
'Fermeture du classeur d'importation
ClasseurXLS.Workbooks.Close
MsgBox ("Importation des données effectuée")
End Sub
Private Sub Form_Load()
Call connection_bd
End Sub
sim140680
Messages postés8Date d'inscriptionlundi 12 mai 2003StatutMembreDernière intervention31 décembre 2009 11 juin 2004 à 18:56
Salut
G testé ton code Cassidy, mais y'a un petit souci du coté de:
Marche mieux, par contre, j'arrive pas a passer la variable en paramètre, ma table de sortie est NomTable, comment puis je arrager ça?
Y'a t'il aussi une solution dans le cas ou l'on a plusieurs tables dans le fichier excel??
Merci d'avance
tbbuim1
Messages postés940Date d'inscriptionjeudi 20 février 2003StatutMembreDernière intervention 3 février 20119 27 nov. 2003 à 11:55
Pas mal, mais il existe une manière beaucoup plus efficace pour arriver au même résultat.
il s'agit d'utiliser le DAO.
On crée un objet ADO puis à l'aide de AddNew, on rajoute un nouvel enregistrement. En y ajoutant les cellules du fichier excel bien entendu. Ceci à le mérite d'accélérer la manip sans avoir besoin de faire un seul "Insert into". Et ce qi serait bien, c'est que dans ta méthode, tu rajoutes la feuille que l'on veut copier. Car si on est sur un classeur qui contient plusieurs feuilles, ça peut poser de gros problèmes... Mais c'était bien trouvé quand même. Bravo
thekissman
Messages postés33Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention28 juillet 2004 2 juin 2003 à 11:27
Salut,
tu fais comment pour manipuler Excel avec un adodc sans enregistrer les info dans Access.
En fait je cherche à prendre des données d'une feuille Excel, en faire les calculs et enregitrer ces stats dans un autres fichier Excel.
Donc une table access c'est possible mais ça ferai lourd de s'en servir juste comme sauvegarde.
Merci de ton aide.
cs_farid91
Messages postés13Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention21 février 2002 14 févr. 2002 à 10:35
C bien. Connait tu une facon pour exporte une table Access vers SQL Server par programmation bien sur. Si oui ecrit moi un message merci.
17 nov. 2011 à 10:34
Quoi faire? voici mon code:
Option Compare Database
Private Sub impotation_du_fichier_Click()
Dim PathFic As String
Dim NomFic As String
Dim NomFicXLS As String
Dim NomTable As String
Dim code_article As Integer
Dim libelle_article As String
Dim prix_vente As Integer
Dim prix_achat As Integer
Dim stock As Integer
Dim i As Integer
Dim sql As String
Set dbs = CurrentDb
Set ClasseurXLS = CreateObject("Excel.application")
'Initialisation Nom du fichier à importer
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xlsx"
'NomFic = "tablesStock.xlsx"
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Emplacement du fichier à importer
If (Text2.Value <> "") Then
PathFic = Text2
Else
réponse = MsgBox("Emplacement du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Initialisation Nom de la table d'importation
If (Text3.Value <> "") Then
NomTable = Text3
Else
réponse = MsgBox("Nom de la table d'importation manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open PathFic & NomFic
'Creation d'une table d'importation
sql = "CREATE TABLE table_provisoire(icodearticle integer, ilibellearticle string, iprixv integer, iprixacht integer, istock integer)"
dbs.Execute sql
i = 2
Do While ClasseurXLS.Cells(i, 1) <> ""
'Recuperation des données lignes par lignes
code_article = ClasseurXLS.Cells(i, 1)
libelle_article = ClasseurXLS.Cells(i, 2)
prix_vente = ClasseurXLS.Cells(i, 3)
prix_achat = ClasseurXLS.Cells(i, 4)
stock = ClasseurXLS.Cells(i, 5)
'Insertion des données dans la table
sql = "INSERT INTO TableS (code_article, libelle_article, prix_vente, prix_achat, stock) values ('" & Vcodearticle & "','" & VLibelle & "', '" & VprixVente & "' , '" & Vprixacht & "', '" & Vstock & "');"
dbs.Execute sql
i = i + 1
Loop
'Fermeture du classeur d'importation
ClasseurXLS.Workbooks.Close
MsgBox ("Importation des données effectuée")
End Sub
18 juin 2011 à 01:26
j'ai crée tte ma base de donnée avec les clé primaire et les relation
et dans l'une des table je veux importer une 3 colonne de excel vers le 3 colonne de meme champ sous access
avec une mise a jour des donnée sous access a chaque fois que cela se fai sous excel
24 juil. 2009 à 09:56
8 mai 2008 à 15:56
4 juil. 2007 à 11:23
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
Else
réponse = MsgBox("Nom du fichier à importer manquant", vbExclamation + vbOKOnly, "Attention !!!")
Exit Sub
End If
par
NomFic = "Agriculture.xls"
vu que ton nom est en dur...
4 juil. 2007 à 11:18
j'ai essayé le code et ça ne fonctionne pas, et ce dès le début:
'Initialisation Nom du fichier à importer
If (Text1.Value <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
j'ai remplacé Text1.value par:
If (Agriculture.Value <> "") Then
le nom du fichier à importer étant agriculture.xls,
Et ça me dit qu'un objet est requis, que agriculture.value est vide.
je ne comprend pas trop l'erreur, déjà je ne vois pas à quoi correspond "Text1.Value".
Pourriez vous m'aider?
Merci
2 mai 2007 à 11:39
Voila j'utilise ce code pour importer ma table excel dans ma table access.
Le chemin du fichier a ouvrir je le récupere grace a une boite de dialogue windows qui me permet de choisir le fichier a importer.
Ce chemin s'affiche dans une textbox que j'ai appelé URL
d'ou mon code ,
Private Sub Commande3_Click()
Dim Nom as string
.
.
.
Set dbs = CurrentDB
Set ClasseurXLS = Createobject("Excel.application")
If (URL.value<>"") then
Nom=URL
else
msgbox"URL du ficier blablabla...."
exit sub
end if
ClasseurXLS.workbooks.Open Nom
Et la problème il me dit:
erreur 1004
la méthode open de la classe workbooks a échoué.
Je precise que Nom prend bien la valeur situé dans la texte box nommé URL étant donné que quand elle n'est pas remplie il affiche la Msgbox
Je ne sais pas comment régler ce problème pouvez vous m'éclairer?
1 déc. 2006 à 15:04
1 déc. 2006 à 15:02
j'ai essayé ton code,mais un message d'erreur est signalé
le voila
"Informations supplémentaires : L'opérateur n'est pas valide pour type 'Range' et chaîne ""."
des idées?
voila le code que j'ai utilisé
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim iNom_emp(,) As String
'Titre
OpenFileDialog1.Title = "Chargement"
'Extension par défaut
OpenFileDialog1.DefaultExt = "xls"
'Filtres
OpenFileDialog1.Filter = "fichiers excels(*.xls)|*.xls"
OpenFileDialog1.FilterIndex = 1
'Ouverture boite de dialogue OpenFile
If OpenFileDialog1.ShowDialog(Me) = DialogResult.OK Then
TextBox2.Text() = OpenFileDialog1.FileName
End If
Dim fichier_excel As String
fichier_excel = TextBox2.Text.Substring(TextBox2.Text.LastIndexOf("") + 1)
ClasseurXLS = CreateObject("Excel.application")
'Ouverture du classeur d'importation
Try
ClasseurXLS.Workbooks.Open(TextBox2.Text)
Catch ex As Exception
MsgBox("erreur")
End Try
Dim i As Integer
i = 2
Dim a As String
Do While ClasseurXLS.cells(i, 1) <> ""
'Recuperation des données lignes par lignes
iNom_emp(i, 0) = ClasseurXLS.cells(i, 1)
iNom_emp(i, 1) = ClasseurXLS.cells(i, 2)
iNom_emp(i, 2) = ClasseurXLS.cells(i, 3)
iNom_emp(i, 3) = ClasseurXLS.cells(i, 4)
iNom_emp(i, 4) = ClasseurXLS.cells(i, 5)
iNom_emp(i, 5) = ClasseurXLS.cells(i, 6)
'Insertion des données dans la table
i = i + 1
Loop
End Sub
12 mars 2006 à 09:34
*Il existe une commande TransfertSpreadSheet qui permet de créer une table access à partir d'une feuille excel. Pour faire une mise à jour, il suffit donc de supprimer l'ancienne table Access et de la remplacer par la table créer
doCmd.TransfertSpreadSheet acImport,,"Table Access","C:\toto.xls",true ainsi tu auras toujours la dernière mise à jour.
* Ou alors tu supprimes toutes les lignes de la table
Delete * from table; et tu inséres les nouvelles à partir de la feuille excel en listant chaque ligne de ton fichier excel et en faisant un Insert into Table value ('" & ClasseurXLS(1,1) & "'," & ...) , par exemple en testant la cellule de ta clé primaire à chaque ligne. Si elle est vide, tu arrêtes de boucler...
N'oublies pas de faire référence à Microsoft Excel 10.0 library
12 mars 2006 à 02:23
si possible je serais content de ca
29 août 2005 à 00:31
15 févr. 2005 à 23:20
Ah oui, là je n'étais pas du tout dans le coup.
Merci
15 févr. 2005 à 20:08
15 févr. 2005 à 00:45
J'ai essayé ton code mais je n'y arrive pas
set dbs=CurrentDB ça plante
cela veut dire quoi ?
7 sept. 2004 à 09:45
"DoCmd.TransferSpreadsheet acImport, 8, NomTable, PathFic & NomFic, True"
NomTable => Nom de la table a créer
PathFic => "C:\Excel"
NomFic => "Fichier.xls"
6 sept. 2004 à 17:50
g eu le mm pb avec
sql = "create table " & NomTable & "(Nom_Emp string, DateJ date, Num_affaire integer, Num_phase integer, Nb_heures integer, Commentaire string)"
mais je ne voulais que passer les données en access ma table etait deja creer
j'ai un autre pb
voila g une Colonne dans ma table nommée Nom_Client qui stocke le nom des clients mais j'ai des clients de format nom *************(******) quand je lance mon app elle commence à faire l'importation mais dès qu'elle trouve un nom de client de ce format me sort une erreur
erreur syntaxe (operateur abscent) dans l'expression "*************(*********'
alors le nom du client avec des ()
je t'envoie le code pour que tu puisse jté un coup d'oeil
Option Explicit
Public ClasseurXLS As Object
Public cn As ADODB.Connection
Public rs As ADODB.Recordset
Public Sub connection_bd()
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=C:\WINDOWS\Desktop\Livraison\Delivery.mdb"
cn.Open
If cn.State = adStateOpen Then
MsgBox "connection etablie"
Else
MsgBox "connection echouee"
End If
End Sub
Private Sub Cmd_Importation_Click()
Dim PathFic As String
Dim NomFic As String
Dim NomFicXLS As String
Dim NomTable As String
Dim iCode_Client As String
Dim iNom_Client As Variant
Dim iCode_Facture As String
Dim iMontant_Facture As Currency
Dim iNum_Bureau As Integer
Dim i As Integer
Dim iType_Recu As String
Dim sql As String
Dim iDate_Transac As Date
With cn
Set ClasseurXLS = CreateObject("Excel.application")
'Initialisation Nom du fichier à importer
If (Text1.Text <> "") Then
NomFic = Text1
NomFic = NomFic & ".xls"
Else
MsgBox ("Nom du fichier à importer manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Initialisation Emplacement du fichier à importer
If (Text2.Text <> "") Then
PathFic = Text2
Else
MsgBox ("Emplacement du fichier à importer manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Initialisation Nom de la table d'importation
If (Text3.Text <> "") Then
NomTable = Text3
Else
MsgBox ("Nom de la table d'importation manquant"), vbExclamation + vbOKOnly, "Attention !!!"
Exit Sub
End If
'Ouverture du classeur d'importation
ClasseurXLS.Workbooks.Open "C:\windows\Desktop\Livraison\Factures.xls" '& NomFic
'Creation d'une table d'importation
'sql = "create table "&FACRTURE1&"(ID as autoNumber, Code_Facture as string, Code_Client as String, Nom_Client as string, Montant_Facture as double,Num_Bureau as Integer,Type_Recu as String,Date_Transact as date, Commentaire string)"
'dbs.Execute sql
i = 2
Do While ClasseurXLS.cells(i, 1) <> ""
'Recuperation des données lignes par lignes
iDate_Transac = ClasseurXLS.cells(i, 1)
iCode_Facture = ClasseurXLS.cells(i, 2)
iCode_Client = ClasseurXLS.cells(i, 3)
iNom_Client = ClasseurXLS.cells(i, 4)
iMontant_Facture = ClasseurXLS.cells(i, 5)
iNum_Bureau = ClasseurXLS.cells(i, 6)
iType_Recu = ClasseurXLS.cells(i, 7)
'Insertion des données dans la table
sql = "INSERT INTO FACTURES (Date_Transac,Code_Facture, Code_Client, Nom_Client, Montant_Facture, Num_Bureau, Type_Recu) values ('" & iDate_Transac & "', '" & iCode_Facture & "', '" & iCode_Client & "' , '" & iNom_Client & "' , '" & iMontant_Facture & "', '" & iNum_Bureau & "', '" & iType_Recu & "');"
'sql = "INSERT INTO FACTURES (Date_Transac,Code_Facture, Code_Client, Nom_Client, Montant_Facture, Num_Bureau, Type_Recu) values ('" & VDate_Transac & "', '" & VCode_Facture & "', '" & VCode_Client & "' , '" & VNom_Client & "' , '" & VMontant_Facture & "', '" & VNum_Bureau & "', '" & VType_Recu & "');"
cn.Execute sql
i = i + 1
Loop
End With
'Fermeture du classeur d'importation
ClasseurXLS.Workbooks.Close
MsgBox ("Importation des données effectuée")
End Sub
Private Sub Form_Load()
Call connection_bd
End Sub
11 juin 2004 à 18:56
G testé ton code Cassidy, mais y'a un petit souci du coté de:
sql = "create table " & NomTable & "(Nom_Emp string, DateJ date, Num_affaire integer, Num_phase integer, Nb_heures integer, Commentaire string)"
dbs.Execute sql
perso g une erreur de compil:
ce genre d'instruction marche mieux
sql = "CREATE TABLE NomTable (Num_emp, DateJ, Num_affaire, Num_phase....
dbs.Execute sql
Marche mieux, par contre, j'arrive pas a passer la variable en paramètre, ma table de sortie est NomTable, comment puis je arrager ça?
Y'a t'il aussi une solution dans le cas ou l'on a plusieurs tables dans le fichier excel??
Merci d'avance
27 nov. 2003 à 11:55
il s'agit d'utiliser le DAO.
On crée un objet ADO puis à l'aide de AddNew, on rajoute un nouvel enregistrement. En y ajoutant les cellules du fichier excel bien entendu. Ceci à le mérite d'accélérer la manip sans avoir besoin de faire un seul "Insert into". Et ce qi serait bien, c'est que dans ta méthode, tu rajoutes la feuille que l'on veut copier. Car si on est sur un classeur qui contient plusieurs feuilles, ça peut poser de gros problèmes... Mais c'était bien trouvé quand même. Bravo
2 juin 2003 à 11:27
tu fais comment pour manipuler Excel avec un adodc sans enregistrer les info dans Access.
En fait je cherche à prendre des données d'une feuille Excel, en faire les calculs et enregitrer ces stats dans un autres fichier Excel.
Donc une table access c'est possible mais ça ferai lourd de s'en servir juste comme sauvegarde.
Merci de ton aide.
14 févr. 2002 à 10:35