Import excel vers access [Résolu]

Messages postés
3
Date d'inscription
lundi 28 février 2011
Dernière intervention
30 mars 2011
- 29 mars 2011 à 15:01 - Dernière réponse :
Messages postés
3
Date d'inscription
lundi 28 février 2011
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,
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
29 mars 2011 à 16:14
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
3
Date d'inscription
lundi 28 février 2011
Dernière intervention
30 mars 2011
30 mars 2011 à 11:04
0
Merci
Bjr,

Oui je m'en suis rendu compte après coup effectivement ca marche comme ca merci ^^

J'ai maintenant le probleme dans le sens inverse quand je veux transférer ma base access vers un fichier excel j'utilise toujours la même fonction pour récupérer le fichier de destination cette fois mais lorsque que j'utilise cette ligne :
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, "BdD", Text2, True

BdD étant la table que je veux envoyé vers Text2 le nom de fichier de destination récupéré via ma fonction launchCD.
Lorsque que j'execute ceci je n'ai pas de message d'erreur mais lorsque que j'ouvre le fichier de destination il n'y a rien à l'intérieur.
Commenter la réponse de barry54

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.