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 )

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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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