Page 1 sur 1

[OK]transfert de feuilles excel ---> access

Posté : 04 mars 2003, 17:51:00
par Invité
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.

Posté : 05 mars 2003, 17:15:00
par Invité
c'est bon c'est réglé.

Posté : 05 mars 2003, 23:19:00
par Kitty
Bonsoir,

Content pour toi. Peut-être peux-tu nous faire profiter de la soluce ? On ne sait jamais, à§a peut en aider d'autres ...
Merci.

Posté : 06 mars 2003, 09:08:00
par Invité
ok, je pofine juste le truc et ensuiteje vous mets ca.

Posté : 06 mars 2003, 10:23:00
par Invité
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">

Posté : 06 mars 2003, 21:29:00
par Kitty
Merci à  toi.