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é.
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!!!
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
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)
Comment peut on par exemple insérer efficacement ce code dans le code précedent! ou trouver une autre parade à mon souci!
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
Merci infiniment!
Partager