1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Sub ImportTxt()
Dim Repertoire As String, Fichier As String
Dim NbWs As Integer, i As Integer
Dim strFullName As Variant
Dim Cn As Object, Rs As Object
'Sélection du ficher
strFullName = Application.GetOpenFilename("Fichiers textes (*.txt),*.txt", , _
"Sélectionnez un fichier :")
'On sort si aucun fichier n'est sélectionné
If strFullName = False Then Exit Sub
Application.ScreenUpdating = False
Fichier = Dir(strFullName)
Repertoire = Left(strFullName, Len(strFullName) - (Len(Fichier) + 1))
'Connection
Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & ";" & _
"Extended Properties=""text;HDR=Yes;FMT=Delimited"""
'Requete
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM [" & Fichier & "]", Cn, 3, 1, 1
'boucle sur le résultat de la requete
While Not Rs.EOF
'Ajout Feuille
Worksheets.Add
'Ecriture des données dans la feuille
'65000 spécifie le nombre de lignes par feuille, xl2003 max absolu = 65536
ActiveSheet.Range("A1").CopyFromRecordset Rs, 65000
Wend
Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
Application.ScreenUpdating = True
NbWs = Worksheets.Count
For i = 1 To NbWs - 1
Sheets(i).Move After:=Sheets(NbWs)
Sheets(i).Name = "Data " & i
Next i
Sheets("Parametres").Select
ActiveSheet.Shapes("Button 1").Visible = False
ActiveSheet.Shapes("Button 2").Visible = True
End Sub |
Partager