Bonjour à tous,
Je cherche à parser un fichier texte dont les champs sont de longeur fixe (-> complétés avec des espaces). Chaque série est étalée sur 160 caractères, et il y a environ 2000 séries sur ce fichier.
J'ai donc cherché à utiliser les possibilités offertes par l'importation de données, et l''enregistreur de macros m'a pondu le code suivant :
ce que je voudrais, c'est étendre ce parsing pour le rendre récursif, et donc faire répéter ce schéma pour les 2000 séries.
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 compteur = 1 With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;monfichier.txt" _ , Destination:=Cells(1, 1)) .Name = "monfichier" .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 = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) .TextFileFixedColumnWidths = Array((compteur - 1) * 160, 2, 2, 8, 6, 6, 6, 24, 24, 1, 1, 1, 5, 5, 11, 16, 6, 10, 15, 11) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With
J'ai doc cherché à faire une boucle :
Ca ffoire indubitablement et comme je ne comprends pas ce que je fais (très clairement), je souhaite vous demander votre avis
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 For compteur = 2 To 100 Cells(compteur, 1).Select With Selection.QueryTable .Connection = _ "TEXT;monfichier.txt" .TextFilePlatform = 850 .TextFileStartRow = 1 .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2) .TextFileFixedColumnWidths = Array((compteur - 1) * 160, 2, 2, 8, 6, 6, 6, 24, 24, 1, 1, 1, 5, 5, 11, 16, 6, 10, 15, 11) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With Next compteur
y aurait-il une autre méthode ? que corriger dans celle-ci ? (erreurs 1004 qui tombent sans arrêt)
merci
Partager