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 :

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
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.

J'ai doc cherché à faire une boucle :

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
Ca ffoire indubitablement et comme je ne comprends pas ce que je fais (très clairement), je souhaite vous demander votre avis

y aurait-il une autre méthode ? que corriger dans celle-ci ? (erreurs 1004 qui tombent sans arrêt)

merci