Import fichier txt plus de points
Bonjour à tous,
J'utilise une code qui me rapatrie un fichier texte dans Excel mais ce code traite ligne par ligne et champ par champ, comme j'arrive à des fichiers texte de +/- 90000 lignes et 99 colonnes, ça prend un temps fou.
J'ai donc adapté un code retrouvé sur la FAQ mais j'ai un soucis, cette méthode "supprime" les points et bien évidemment j'ai besoin des points.
Un des champs contient un chiffre d'affaire => si 1250.50 dans Excel 125050.
(Ne me dites pas de diviser par 100 car 1250.00 apparait dans le fichier texte comme 1250 :aie: )
Donc voici le code en question, si quelqu'un peu me renseigner sur l'élément à adapter afin que les "." soient maintenus dans Excel, je serais ravis :mouarf:
Code:
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 |
D'avance merci