Import excel vers access

Résolu
barry54 Messages postés 3 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 30 mars 2011 - 29 mars 2011 à 15:01
barry54 Messages postés 3 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 30 mars 2011 - 30 mars 2011 à 11:04
Bonjour,

Je souhaite via une interface access importer des fichiers excel pour les integrer à la base.

Les fichiers à importer ont tous la même forme ( nombre de colonne ainsi que le nom de celle ci ), et doivent être enregistré dans une même table à la suite les un des autres.
Je dois donc utiliser une fenêtre d'exploration pour importer le fichier souhaité jusque la tous va bien je récupére le nom et l'emplacement du fichier via la fonction suivante :

Proprietes du bouton :
Private Sub Commande1_Click()

Me!Text1 = LaunchCD(Me)

End Sub

Dans un module :
Option Compare Database

Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.Hwnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:"
OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "A file was not selected!", vbInformation, _
"Select a file using the Common Dialog DLL"
Else
LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
End If
End Function

Je souhaite ensuite utiliser le contenu de la zone de texte dans un DoCmd.TransferSpreadsheet comme ceci :

Private Sub Commande4_Click()

DoCmd.TransferSpreadsheet acImport, 3, "BdD", "Text1", True

End Sub

Mon problème je récupére bien le chemin du fichier désiré mais à la place du nom de fichier j'ai Text1 exemple : C:\Documents and Settings\Bureau\Text1.WK3 au lieu de C:\Documents and Settings\Bureau\test.xls

Pourriez vous me dire où ais-je fait une erreur.

On vous remerciant par avance.

Cordialement,

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 mars 2011 à 16:14
Salut

Tel que tu l'écris, "Text1" correspond ... au texte Text1 et pas son contenu, puisque tu as mis du texte entre ".
Essaye ça :
DoCmd.TransferSpreadsheet acImport, 3, "BdD", Text1.Text, True

PS : Utilise la coloration syntaxique (3ème icone à droite) la prochaine fois pour afficher du code

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Rejoignez-nous