Bonjour à tous,

j'ai créé un code VBA pour importer des fichiers texte dans un fichier Excel mais je rencontre un problème avec certaines données : celles qui commence par un ou plusieurs 0, celui(ceux)-ci disparaissent ce qui me pose un gros soucis pour la suite car il est indispensable.

Le but de ce document est de récupérer le contenu, de le mettre dans une forme précise puis de l'utiliser pour importer les absences des salariés en paie. Certains matricules de salariés commencent par 1 ou plusieurs 0, mais la taille n'est pas toujours fixe pour chaque salarié.

Ci dessous le code VBA : (généré en grosse partie via l'enregistreur de macro, n'ayant pas d'idées de comment faire ça, et n'ayant pas de caractères ou autre précis permettant de délimiter les colonnes)


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
56
57
58
59
60
61
62
Sub import_fichiers_txt()
 
Dim fichier As String, chemin As String
 
chemin = "C:\Users\GUIGUI\Desktop\Extract Carlabella\"
 
fichier = Dir(chemin & "*.txt")
 
nb_lignes_absences = 2
 
If Cells(nb_lignes_absences, 1) = "" Then
 
    nb_lignes_absences = 2
 
Else
 
    Do While Cells(nb_lignes_absences, 1) <> ""
 
        nb_lignes_absences = nb_lignes_absences + 1
 
    Loop
 
    nb_lignes_absences = nb_lignes_absences - 1
 
End If
 
Call Module1.importation(chemin, fichier, nb_lignes_absences)
 
End Sub
 
Sub importation(chemin, fichier, ligne)
 
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & chemin & fichier, Destination:=Range("$A$" & ligne))
        .Name = fichier
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileFixedColumnWidths = Array(2, 7, 7, 8, 5, 8, 8, 56, 75, 35, 12, 3)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
 
End Sub
Ci-dessous un exemple de contenu de fichier texte (les matricules se situent après les deux lettres "EV"):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
EV02380     096119/03/1800:0121/03/1800:01        3.00                                                                                                1                                                    21/03/1815:55:50:79     31/03/18
EV52415     096119/03/1800:0120/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:79     31/03/18
EV52216     096119/03/1800:0123/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
EV53008     096113/03/1800:0116/03/1800:01        4.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
EV02652     096112/03/1800:0116/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
EV52415     096112/03/1800:0116/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:80     31/03/18
EV01189     096109/03/1800:0131/03/1800:01       16.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
EV52415     096108/03/1800:0109/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
EV02652     096108/03/1800:0109/03/1800:01        2.00                                                                                                1                                                    21/03/1815:55:50:81     31/03/18
EV52422     096105/03/1800:0109/03/1800:01        5.00                                                                                                1                                                    21/03/1815:55:50:82     31/03/18
EV52422     096105/02/1800:0109/02/1800:01       -5.00                                                                                                1                                                    21/03/1815:55:50:82     31/03/18
Si par hasard quelqu'un a une idée de comment résoudre mon problème (quitte à utiliser une autre solution pour importer les données), ce serait franchement super car là, je ne vois pas comment faire....

Merci par avance !