[VBA] Importer feuille Excel sous Access [Résolu]

[VBA] Importer feuille Excel sous Access Importer une feuille excel sous access en VBA (Résolu) » Forum - Excel Import feuille excel vers access en vba » Forum - VB / VBA [VBA]importer feuille excel dans table access » Forum - VB / VBA Formulaire en VBA dans feuille Excel (Résolu) » Forum - VB / VBA Comment copier une feuille EXCEL sous ACCESS? » Forum - Programmation

Bonjour!

Mon objectif : Je souhaite importer une feuille Excel à partir d'Access.

Je rentre donc dans une liste déroulante (dans un formulaire) le nom de ma feuille excel à importer. Puis, un clic sur un bouton me permet:
- d'ouvrir une boite de dialogue et choisir le fichier excel
- le programme reconnait alors le nom de la feuille choisie (car le fichier a plusieurs feuilles)
- d'importer cette feuille dans une nouvelle table Access qui portera le même nom

Mon problème, c'est qu'il ne semble pas trouver la feuille!

***

Voici mon code (la feuille, ici, est "societes2006") :

Première partie: code de la fonction
Option Compare Database

Public 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(ByRef strform As Form, ByRef nt As String, ByRef nf As Excel.Worksheet) As String

Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.Hwnd
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "F:\Stage Kévin\Bases\" 'Choisissez ici le répertoire initial
OpenFile.lpstrTitle = "Ouverture du fichier" 'Entrez ici le titre de votre boite de dialogue
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "Veuillez choisir un fichier", vbInformation, "Fichier non trouvé" 'choisir un msg d'erreur
Else
LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, nt, LaunchCD, True, nf
End If

End Function

Deuxième partie : code du bouton
Private Sub Import_Click()

Dim NomTable As String
Dim NomFeuille As String

NomFeuille = ListeTable
NomTable = ListeTable

Me!Résultat = LaunchCD(Me, NomTable, NomFeuille)
Résultat = "Table importée"

End Sub

***

ListeTable est le nom de la liste déroulante.

Lorsque j'exécute, la boite de dialogue s'ouvre bien, mais ensuite, j'ai le message suivant:

"Erreur d'execution '3011':
Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet 'Societes2006'. Assurez-vous que l'objet existe et que vous avez correctement saisi son nom et son chemin d'accès."

SVP, j'aurais besoin d'un p'tit coup de main! Je ne sais plus quoi tenter...

Forum

[VBA] Importer feuille Excel sous Access Importer une feuille excel sous access en VBA (Résolu) » Forum - Excel Import feuille excel vers access en vba » Forum - VB / VBA [VBA]importer feuille excel dans table access » Forum - VB / VBA Formulaire en VBA dans feuille Excel (Résolu) » Forum - VB / VBA Comment copier une feuille EXCEL sous ACCESS? » Forum - Programmation

Web: www.shapebootstrap.net

6 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Finalement, j'ai trouvé la solution, c'était tout bête!
Il manquait simplement un "!" après "nf"

Autrement dit :

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, nt, LaunchCD, True, nf  & "!"


En effet, lorsqu'on ouvre une feuille, ce qui est rapporté n'est pas "feuille" mais "feuille!".

Merci quand même pour votre aide.
Cette réponse vous a-t-elle aidé ?  

Reply
réponses:
  • auteur

    bonjour kalderon;
    je ss très interessé par ton code, puis je avoir le privilège d'avoir le code source ??
    si possible, merci de me transmettre le fichier sur ma boite e mail : [email protected]

    merci d'avance

  • auteur

    merci c'est interressant...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

UP ! J'ai vraiment besoin d'aide! Merci d'avance

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour, je suis bien incapable de t'aider avec la méthode que tu as choisie...
mais, puisque Blux est en vacances, je te propose une autre solution.

Il est possible de lier sous access des feuilles Excel qui sont affichées comme des tables attachées et qui sont mises à jour automatiquement lorsque les données sont mises à jour sous Excel.

Menu fichier, données externes, lier des tables.
Dans la boite de dialogue du bas, choisir fichiers Excel puis parcourir les fichiers et choisir les feuilles voulues.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour
Essaye dans un module VBA

DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, nom de la table de destination des données importés, Nom et chamin du fichier à importer, True

Ca devrait marcher

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed