Access Importation Excel VBA

Résolu/Fermé
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 - 6 déc. 2007 à 10:35
 blaster_soft - 2 sept. 2009 à 00:52
Bonjour à toutes et à tous,

Bon mon soucis est simple je n'arrive pas à importer un fichier sur access de manière automatique, je m'explique:

J'ai un code VBA qui fonctionne mais ne m'apporte que partiellement ce que je veux:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", "c:\recap.xls", True

En définitive je souhaiterai créer (avec votre aide) un Bouton qui lorsque je clique dessus, m'ouvre une fenetre qui me permet de choisir le fichier que je veux, dans le répertoire que je veux et de l'importer dans une table prévue à cet effet.

En creusant un peu j'ai eu une idée pas si lumineuse qui est la suivante:

Stocker le "path" dans une variable Toto par exemple ensuite de remplace "c:\recap.xls" par Toto, vous pensez bien, ça a foiré, d'où ma présence ici a vous demander votre aide.

En espérant avoir été clair.

D'avance merci.

Alex
A voir également:

13 réponses

Le code que tu a copié est plutot pour des gens un peu avancé. Tu auras beaucoup plus facile ave le FileOpenDialog. Là le nom du fichier est une propriété de l'objet.
3
Re salut,
voici une solution très simple qui march aussi bien avec une macro Access qu'en VBA. elle te permet de naviger dans tes repertoires pour prendre le fichier voulu et active le wizard d'import.

DoCmd.RunCommand acCmdImport

good luck
1
voila la solution a tous vos problème il suffit de copier coller la formule magique dans une nouveau module et modifier que le nom de la table qui va etre créer après l'importation et le tours et jouer. et surtout ne toucher à rien :d

Function fOpenFiles() As String

'Nécessite la référence microsoft office x.x object library

Dim Dialogue As FileDialog
Dim Fichier As Variant
Set Dialogue = FileDialog(msoFileDialogOpen)

With Dialogue
.AllowMultiSelect = True
.ButtonName = "Ouvrir"
.InitialFileName = "*.xls"
.Filters.Clear
.Filters.Add "Tableur Microsoft Excel", "*.xls"
.InitialView = msoFileDialogViewList
.Title = "Veuillez sélectionner les fichiers ..."
If .Show Then
For Each Fichier In .SelectedItems
fOpenFiles = fOpenFiles & Fichier & ";"
Next
End If
End With

If Len(fOpenFiles) > 0 Then
fOpenFiles = Left(fOpenFiles, Len(fOpenFiles) - 1)
End If

Set Dialogue = Nothing

End Function
'------------------------------------------------------------
' importer_DATA_1_importer
'
'------------------------------------------------------------

Function importer_DATA_1_importer()
On Error GoTo importer_DATA_1_importer_Err

DoCmd.TransferSpreadsheet acImport, 8, "Nom de la table", fOpenFiles(), True, ""


importer_DATA_1_importer_Exit:
Exit Function

importer_DATA_1_importer_Err:
MsgBox Error$
Resume importer_DATA_1_importer_Exit

End Function
1
Il y a le Microsoft Common Dialog 6.0 qui contien un File Open Dialog
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
regarde:
http://office.microsoft.com/en-gb/access/HP051866541033.aspx
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
6 déc. 2007 à 14:56
Bonjour à toutes et à tous,

Je me retrouve coincé, car je suis obligé de mettre un chemin précis et un nom de fichier prédéfini, je peux avoir à mettre à jour ma base avec un fichier dans c:\toto.xls, ou encore c:\Temp\Boite1\tata.xls, concrètement le nom du fichier excel ainsi que son chemin peuvent varier.
J'ai trouvé quelque chose qui s'aparente à ce que je recheche, cette fonction VBA me permet d'afficher dans une MSGBOX le chemin avec le fichier, le but est de le stocker dans une variable et d'ouvrir le doc.

https://access.developpez.com/faq/?page=CheminsRep

Je pense que vous avez compris que j'étais une belle buse en VBA :)
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
6 déc. 2007 à 17:42
Voici le code de la fonction que j'ai trouvé:

'Déclaration de l'API
Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

'Structure du fichier
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

'Constantes
Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000
Private Const OFN_NOTESTFILECREATE = &H10000

Private Const OFN_SHAREFALLTHROUGH = 2
Private Const OFN_SHARENOWARN = 1
Private Const OFN_SHAREWARN = 0


Public Function OuvrirUnFichier(Handle As Long, _
Titre As String, _
TypeRetour As Byte, _
Optional TitreFiltre As String, _
Optional TypeFichier As String, _
Optional RepParDefaut As String) As String
'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
'la boîte de dialogue de sélection d'un fichier.
'Explication des paramètres
'Handle = le handle de la fenêtre (Me.Hwnd)
'Titre = Titre de la boîte de dialogue
'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)
'1 = Chemin complet + Nom du fichier
'2 = Nom fichier seulement
'TitreFiltre = Titre du filtre
'Exemple: Fichier Access
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'TypeFichier = Extention du fichier (Sans le .)
'Exemple: MDB
'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
'RepParDefaut = Répertoire d'ouverture par defaut
'Exemple: C:\windows\system32
'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application

Dim StructFile As OPENFILENAME
Dim sFiltre As String

'Construction du filtre en fonction des arguments spécifiés
If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
End If
sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)


'Configuration de la boîte de dialogue
With StructFile
.lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
.hwndOwner = Handle 'Identification du handle de la fenêtre
.lpstrFilter = sFiltre 'Application du filtre
.lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
.nMaxFile = 254 'Taille maximale du fichier
.lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
.nMaxFileTitle = 254 'Taille maximale du nom du fichier
.lpstrTitle = Titre 'Titre de la boîte de dialogue
.flags = OFN_HIDEREADONLY 'Option de la boite de dialogue
If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
RepParDefaut = CurrentDb.Name
PathStripPath (RepParDefaut)
.lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
InStr(1, RepParDefaut, vbNullChar) - 1)))
Else: .lpstrInitialDir = RepParDefaut
End If
End With

If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
Select Case TypeRetour
Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
End Select
End If

End Function


Private Sub Commande1_Click()
MsgBox OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Excel", "xls")


End Sub



En effet c'est long, mais cette dernière me permet d'afficher le chemin de mon fichier, le problème qui se pose à moi est le suivant maintenant, comment retrouver la variable où est stocké le "chemin" du fichier choisi???

Je maintiens je suis une buse en VBA :)
0
libasse76 Messages postés 7 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 10 juin 2008
4 juin 2008 à 10:07
BONJOUR Al3xandr3
J'ai le meme probleme que tu avais pour inserer des feuilles excels dans ma base de données access j'ai un bouton de commande et à partir de la je veux acceder à mon classeur excel et je veux le faire avec le code vba
svp es ce que tu peux m'aider avec le ode c urgent
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
6 déc. 2007 à 17:47
Admettons qu'une bonne âme me trouve la variable où est stocké le "chemin" du fichier choisi et que cette dernière s'appelle Tata.
Est-ce que je peux faire ça:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", TATA, True

Au lieu de ça:

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "Import Test", "c:\recap.xls", True


Merci :))
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
6 déc. 2007 à 21:58
Y-a-t-il quelqun qui saurait répondre à ma question je désespère là :-(
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
7 déc. 2007 à 07:22
Bonjour à toutes et à tous,

Okiz je vais tenter de tirer quelque de la fonction FileOpenDialog, je vous tiendrai au courant de l'avancement de mon problème.
En effet le code j'ai pompé sur developper.com est d'un niveau très avancé pour mes maigres compétences en VBA, mais comme dit le vieil adage aide toi et le ciel t'aidera :p

Merci en tout cas de me mettre sur la bonne voie.

Bonne journée à vous et peut bon weekend pour les veinards :)

Alex
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
7 déc. 2007 à 09:58
Re

Quand j'essaie de mettre l'objet Commoni Dialog Control, je me fais jeter par access!!!
Il me dit de réinstaller le serveur OLE, je ne comprends pas ce qui se passe sérieusement... C'est vraiment pénible.
Bref je continue à farfouiller partout pour trouver une solution.

Merci de votre aide.

Alex
0
Al3xandr3 Messages postés 34 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 7 décembre 2007 2
7 déc. 2007 à 13:07
MERCI !!!!!

Mon problème est résolu grâce à ta commande!!!!

DoCmd.RunCommand acCmdImport It rocks!
0
jamcher08 Messages postés 10 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 13 mai 2008
13 mai 2008 à 17:51
bonjour alexandre
je rencontre le memeprobleme que vous avez recontre pour appliquer une procedure sur un fichier a partir de son chemin
je vois que vous etes sevis de la commande "DoCmd.RunCommand acCmdImport It rocks!"
je pense que cadoit me servir moi aussi mais leproblem c'est que je vois pas comment l'inserer dans mon code
j'espere que tu va pouvoir m'aider Alexandre
0
libasse76 Messages postés 7 Date d'inscription lundi 2 juin 2008 Statut Membre Dernière intervention 10 juin 2008 > jamcher08 Messages postés 10 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 13 mai 2008
4 juin 2008 à 13:59
bonjour jamcher08,
on o le meme probleme toi et moi sur l'importation de données si tu as le code es ce que tu peut me passer please
c'est très urgent et merci de ta collaboration
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
22 août 2008 à 00:36
slt les developpeurs! bah pr ma part g une application à réaliser en VB qui permet d'importer/exporter des fichiers textes resultats issus d'un logiciel CIRPLUS(c1 logiciel ki permet le traitement genre cordination et plannification des fréquences. on px executer des calculs la dessus, le resultat est donc exhibé sous forme de fichiers textes où ya bcp d'information, mais mon but est donc extraire seules les données pertinentes ,ainsi les importer dans un fichier excel.. bah là je cherche à le réaliser mais puisque c'est l a1ère fois que je code av le VB 6.0 bah je ss un peu debordée pr ne po dire trop.. ce que je demande c'est si vous pouvez m'aider à codifier la fonction importer le fichier texte vers un fichier excel..
merci d'avance
0