Bonjour à tous, je suis débutant et j'ai de très gros fichiers séparés par des virgules (format csv).

Mon premier problème était de mettre automatiquement le texte dans plusieurs feuilles. Mais depuis que j'ai trouvé sur le net(site microsoft) le script suivant, ce problème a été reglé.

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
54
55
Sub ImportGrosFichier()
'
' Macro1 Macro
' Macro enregistrée le 2007.02.08 par Admin
'
'Attribute VB_Name = "ImportVeryBigTextFile"
 
'Importer dans un classeur un fichier texte de grande taille
'(ajoute des feuilles chaque fois que le fichier importé
'remplit 65000 lignes)
 
'Sören Lindqvist, mpep
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""
'Dimension Variables
Dim ResultStr As String
Dim FileName As String
Dim FileNum As Integer
Dim Counter As Double
 
  FileName = "C:\AFR.txt"
  'If you want an inputbox use the below:
  'InputBox("Write name of file and path")
    If FileName = "" Then End
  FileNum = FreeFile()
  Open FileName For Input As #FileNum
  Application.ScreenUpdating = False
 
  Workbooks.Add template:=xlWorksheet
 
  Counter = 1
 
  Do While Seek(FileNum) <= LOF(FileNum)
 
    Application.StatusBar = "Importerar Rad " & _
      Counter & " xxxx TextFil " & FileName
      Line Input #FileNum, ResultStr
      If Left(ResultStr, 1) = "=" Then
        ActiveCell.Value = "'" & ResultStr
      Else
        ActiveCell.Value = ResultStr
      End If
 
    If ActiveCell.Row = 55536 Then
    ' I'll need some space below
    'If file is larger than (65500.st)
      ActiveWorkbook.Sheets.Add
    Else
      ActiveCell.Offset(1, 0).Select
    End If
    Counter = Counter + 1
 
  Loop
  Close
  Application.StatusBar = False
End Sub
Mon deuxième problème est que je n'arrive pas à personnaliser cet import car tout est mis dans une seule colonne sans séparateur!!!

Or je veux dans le code précédent introduire le fait qu'il prenne en compte le format csv et me mettre à la place d'une virgule un saut de colonne . COMMENT SVP?


Ce code suivant est tiré d'une macro qui, justement travaille dans ce sens (respect du format csv)
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
 With ActiveSheet.QueryTables.Add(Destination:=Range("A1"))
        .Name = "17032007"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 2, 2, 2, 2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
Comment peut on par exemple insérer efficacement ce code dans le code précedent! ou trouver une autre parade à mon souci!

Merci infiniment!