Dim Repertoire As FileDialog
Dim Plage As Range
Dim Array1 As Variant
Dim x As Variant
Dim Rs1 As Recordset
Set Repertoire = Application.FileDialog(msoFileDialogFilePicker)
Repertoire.Show
If Repertoire.SelectedItems.Count > 0 Then _
MsgBox Repertoire.SelectedItems(1)
Repertoire.Title = "Ouvrir un fichier Excel" ' le titre de la boîte de dialogue
Repertoire.Filters.Clear ' efface tous les filtres par défaut
Repertoire.Filters.Add "Fichier Excel 2007(.xlsx)", "*.xlsx" ' crée le filtre pour les fichiers Excel 2007
Repertoire.Filters.Add "Fichier Excel 2003(.xls)", "*.xls" ' crée le filtre pour les fichiers Excel 2003
'Récupère le chemin du fichier excel
Fichier_Excel = Repertoire.SelectedItems(1)
' Envoie des données de la feuille Excel vers Access
'Création d'une table temporaire
DoCmd.RunSQL ("CREATE TABLE TempPCG (Numero Char(50), Intitule char(150));")
Set Rs1 = CurrentDb.OpenRecordset("TempPCG", dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set xls = CreateObject("Excel.Application")
xls.Workbooks.Open (Fichier_Excel)
xls.Visible = True
'essayer avec un TransferSpreadsheet
Set Plage = Worksheets("PCG").Range("A1").CurrentRegion.Offset(1, 0)
Set Plage = Plage.Resize(Plage.Rows.Count - 1, Plage.Columns.Count)
Plage.Select
' Lecture de la plage pour renvoyer une valeur contenant un tableau
Array1 = Plage.Value
' Ecriture des données depuis Excel vers les enregistrement de la table TempPCG
For x = 1 To UBound(Array1, 1)
With Rs1
.AddNew
.Fields("Numero") = Array1(x, 1)
.Fields("Intitule") = Array1(x, 2)
.Update
End With
Next
xlApp.Workbooks.Close
Excel.Application.Quit
End Sub