oué je sais, fichier , importer, fichier excel, etc..... mais là je ne peux pas faire ca.
l'importation doit se faire via un bouton que presserait l'utilisateur. l'idee est d'importer 4 feuilles excel se trouvant dans un fichier. on importe les donnees dans 4 tables. il faut creer un lien entre ces 4 tables car chaque enregistrement correspond (le 1er de la table 1 avec le 1er de la table 2 et 3 et 4, etc...).
enfin si kkun a un script pour importer 4 feuilees dans 4 tables ca sera deja bien.
merci messieurs daaaaaaaaames.
[OK]transfert de feuilles excel ---> access
Modérateur : Modérateurs
voici le code pour recuperer une feuille d'un doc execl. pour en recuperer plusieurs, il faut repeter le code en changeant le numero de feuille et en créant une tableB avec la structure convenue.
Private Sub Commande0_Click()
Dim xlApp As Object
Set xlApp = CreateObject("Excel.application")
Dim col As Integer, lig As Integer
Dim tabValeur(3, 7) As String '3lignes,7colonnes
Dim VtableA As DAO.Recordset
Dim i As Integer
i = 3 'nbre de lignes
Set VtableA = CurrentDb.OpenRecordset("tableA") 'la table dans access est tableA
'ouverture de la feuille excel
xlApp.Workbooks.Open ("c:test.xls")
xlApp.ActiveWorkbook.Worksheets(1).Activate '(1) pour la feuille1
'recuperation des valeurs ds une table
For lig = 1 To i
For col = 1 To 7
tabValeur(lig, col) = xlApp.ActiveWorkbook.ActiveSheet.Cells(lig + 1, col) 'je prends apartir de la 2e ligne
'traitement des cellulles vides
If tabValeur(lig, col) = "" Then
tabValeur(lig, col) = "0"
End If
Next col
Next lig
xlApp.Quit
'ecriture des donnees dans ma table access
'les noms des champs sont colonne1,2,3,4,5,6,7
For lig = 1 To i
[VtableA].AddNew
[VtableA]!colonne1 = tabValeur(lig, 1)
[VtableA]!colonne2 = tabValeur(lig, 2)
[VtableA]!colonne3 = tabValeur(lig, 3)
[VtableA]!colonne4 = tabValeur(lig, 4)
[VtableA]!colonne5 = tabValeur(lig, 5)
[VtableA]!colonne6 = tabValeur(lig, 6)
[VtableA]!colonne7 = tabValeur(lig, 7)
[VtableA].Update
Next lig
End Sub
désolé pas trés optimisé, mais c parce que je dois me servir de cette structure.
la liaison entre les tables n'est pas encore faite, mais l'idee est dappliquer un numerique a incrementer en 1ere colonne de chaque table (code a mettre au niveau de la creation de la table tabValeur).
bon si j'ai été clair c'est un miracle <IMG SRC="/images/smiles/confused_smile46.gif">
Private Sub Commande0_Click()
Dim xlApp As Object
Set xlApp = CreateObject("Excel.application")
Dim col As Integer, lig As Integer
Dim tabValeur(3, 7) As String '3lignes,7colonnes
Dim VtableA As DAO.Recordset
Dim i As Integer
i = 3 'nbre de lignes
Set VtableA = CurrentDb.OpenRecordset("tableA") 'la table dans access est tableA
'ouverture de la feuille excel
xlApp.Workbooks.Open ("c:test.xls")
xlApp.ActiveWorkbook.Worksheets(1).Activate '(1) pour la feuille1
'recuperation des valeurs ds une table
For lig = 1 To i
For col = 1 To 7
tabValeur(lig, col) = xlApp.ActiveWorkbook.ActiveSheet.Cells(lig + 1, col) 'je prends apartir de la 2e ligne
'traitement des cellulles vides
If tabValeur(lig, col) = "" Then
tabValeur(lig, col) = "0"
End If
Next col
Next lig
xlApp.Quit
'ecriture des donnees dans ma table access
'les noms des champs sont colonne1,2,3,4,5,6,7
For lig = 1 To i
[VtableA].AddNew
[VtableA]!colonne1 = tabValeur(lig, 1)
[VtableA]!colonne2 = tabValeur(lig, 2)
[VtableA]!colonne3 = tabValeur(lig, 3)
[VtableA]!colonne4 = tabValeur(lig, 4)
[VtableA]!colonne5 = tabValeur(lig, 5)
[VtableA]!colonne6 = tabValeur(lig, 6)
[VtableA]!colonne7 = tabValeur(lig, 7)
[VtableA].Update
Next lig
End Sub
désolé pas trés optimisé, mais c parce que je dois me servir de cette structure.
la liaison entre les tables n'est pas encore faite, mais l'idee est dappliquer un numerique a incrementer en 1ere colonne de chaque table (code a mettre au niveau de la creation de la table tabValeur).
bon si j'ai été clair c'est un miracle <IMG SRC="/images/smiles/confused_smile46.gif">
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités