Bonjour,

Comme l'indique le titre du sujet, j'ai un soucis avec la fonction EOF sur les fichiers csv.

Voici le besoin : je dois, à partir d'une macro excel, pouvoir exploiter des CDR (Call Detail Record). Ma macro sert donc à les récuperer depuis le serveur et ensuite les ouvrir puis faire le tri.
Je bloque entre l'étape d'ouverture du fichier et remplissage.

Pour faire ce remplissage (je n'ai pas encore fait un quelconque tri, je cherche juste à remplir une feuille excel avec le fichier csv), je me sers d'une boucle qui bouclera tant que je ne suis pas en fin de fichier.

Problème : cette boucle s’arrête dès la fin de la première ligne.

Voici la fonction assurant l'ouverture du fichier et son remplissage

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
 
Private Function fillSheet(path As String)
    Dim ws As Worksheet
 
    path = Mid(path, 2, Len(path) - 2) 'Je retire les " en debut et fin de chaine
    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "Test"
    Open path For Input As #1
    row_number = 0
    Do Until EOF(1)
        Line Input #1, linefromfile
 
        lineitems = Split(linefromfile, ";")
 
        ActiveCell.Offset(row_number, 0).Value = Mid(lineitems(1), 2, Len(lineitems(1)) - 2) 'Je retire les " en debut et fin de chaine
        ActiveCell.Offset(row_number, 1).Value = Mid(lineitems(1), 2, Len(lineitems(1)) - 2) 'Je retire les " en debut et fin de chaine
        ActiveCell.Offset(row_number, 2).Value = Mid(lineitems(2), 2, Len(lineitems(2)) - 2) 'Je retire les " en debut et fin de chaine
 
        row_number = row_number + 1
    Loop
 
    Close #1
End Function
Merci d'avance.