XL 2013 VBA: Import Excel Sheet to Access

Kidcarotte

XLDnaute Nouveau
Bonjour

J'ai ecris un code pour importer une feuille excel de donnees sur Access avec une forme
J'ai donc ecrit un code comme ceci pour la forme :
Option Compare Database
Option Explicit


Private Sub btnBrowse_Click()
Dim diag As Office.FileDialog
Dim item As Variant

Set diag = Application.FileDialog(msoFileDialogFilePicker)
diag.AllowMultiSelect = False
diag.Title = "please select an excel spreadhseet"
diag.Filters.Clear
diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx, *.xlsm"

If diag.Show Then
For Each item In diag.SelectedItems
Me.txtFileName = item
Next
End If
End Sub


Private Sub Import_Click()
Dim FSO As New FileSystemObject

If Nz(Me.txtFileName, "") = "" Then
MsgBox "Please select a file!"
Exit Sub
End If

If FSO.FileExists(Nz(Me.txtFileName, "")) Then
Module1.ImportExcelSpreadsheet = ("Me.txtFileName")
Else
MsgBox "File not found!"
End If
End Sub


Et j'ai un module comme celui ci


Public Sub ImportExcelSpreadsheet(fileName As String, Worksheets As Integer)
On Error GoTo BadFormat
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Parts dimension database creation ", "D:\LocalData\Desktop\Dimension packaging\Measurement process", True, "Database"
Exit Sub

BadFormat:
MsgBox "the file you tried to import was not an excel spreadsheet"
End Sub


Cependant, la feuille qui est actuellement upload est la feuille numero une d'excel, et j'aimerais que ce soit la numero trois

Des suggestions ?

Merci de votre aide !

Cordialement
 

valtrase

XLDnaute Nouveau
Bonjour

J'ai ecris un code pour importer une feuille excel de donnees sur Access avec une forme
J'ai donc ecrit un code comme ceci pour la forme :
Option Compare Database
Option Explicit


Private Sub btnBrowse_Click()
Dim diag As Office.FileDialog
Dim item As Variant

Set diag = Application.FileDialog(msoFileDialogFilePicker)
diag.AllowMultiSelect = False
diag.Title = "please select an excel spreadhseet"
diag.Filters.Clear
diag.Filters.Add "Excel Spreadsheets", "*.xls, *.xlsx, *.xlsm"

If diag.Show Then
For Each item In diag.SelectedItems
Me.txtFileName = item
Next
End If
End Sub


Private Sub Import_Click()
Dim FSO As New FileSystemObject

If Nz(Me.txtFileName, "") = "" Then
MsgBox "Please select a file!"
Exit Sub
End If

If FSO.FileExists(Nz(Me.txtFileName, "")) Then
Module1.ImportExcelSpreadsheet = ("Me.txtFileName")
Else
MsgBox "File not found!"
End If
End Sub


Et j'ai un module comme celui ci


Public Sub ImportExcelSpreadsheet(fileName As String, Worksheets As Integer)
On Error GoTo BadFormat
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Parts dimension database creation ", "D:\LocalData\Desktop\Dimension packaging\Measurement process", True, "Database"
Exit Sub

BadFormat:
MsgBox "the file you tried to import was not an excel spreadsheet"
End Sub


Cependant, la feuille qui est actuellement upload est la feuille numero une d'excel, et j'aimerais que ce soit la numero trois

Des suggestions ?

Merci de votre aide !

Cordialement
Bonjour Kidcarotte,
déjà pourquoi une boucle sur tes items alors que tu forces AllowMultiSelect = False.
Utilise ton Objet range pour renvoyer une plage de cellule Voir La documentation
 

valtrase

XLDnaute Nouveau
Bon, quand tu fait
VB:
If diag.Show Then
For Each item In diag.SelectedItems
Me.txtFileName = item
Next
tu boucles sur tous les éléments sélectionnés dans la boite de dialogue, mais plus haut tu n'autorise pas la multi sélection. Puisque tu note AllowMultiSelect = False.
En fait tu devrais mettre ce code
Code:
If diag.Show then
Me.Me.txtFileName = diag.SelectedItem(1)
Else 
'Ici un message ou autre.....
End If
En ce qui concerne la commande DoCmd.TransferSpreadsheet si tu regardes la documentation
Code:
expression.TransferSpreadsheet (TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA)
tu as un argument Range que tu peux utiliser pour sélectionner une feuille et des cellules, regarde l'exemple fourni
 

Discussions similaires


Haut Bas