Bonjour à tous,
Mon objectif est de réaliser une maccro permettant de lire des output de fichiers d'un programme de calcul et de les écrire sur une page Excel.
Or certain de ces fichiers sont issus d'un environnement Unix ainsi je dois d'abord convertir les fichier pour pouvoir les lire sur Windows.
Pour cela j'utilise le code suivant qui permet de remplacer les retour à la ligne VbLf (UNIX) en VbCrLf (DOS) :
Mon problème est que si le fichier est déjà au format DOS la maccro va rajouter des sauts de lignes supplémentaire, je cherche donc à effectuer cette conversion UNIQUEMENT pour les fichiers au format UNIX.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Open sRepertoire & sNomFichier For Binary As #iFile FileLength = LOF(iFile) strTemp = String(FileLength, Chr(0)) Get #iFile, 1, strTemp strTemp = Replace(strTemp, vbLf, vbCrLf) Put #iFile, 1, strTemp Close #iFile
J'ai essayé la solution suivante pour identifier le format de mon fichier en lisant celui-ci ligne par ligne afin de vérifier si celle-ci contient un saut de ligne de type 'vbCrLf'. Même pour un fichier au format DOS , la variable "DOS" reste toujours à 0.
Pourriez vous m'indiquer mes erreurs ou une méthode me permettant de conditionner cette conversion.
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 'Déclaration variables Dim i As Long Dim sRepertoire As String, sNomFichier As String Dim iFile As Integer Dim strTemp As String Dim FileLength As Long Dim buffer As String Dim DOS As Integer 'Recherche du chemin vers le fichier dans l'onglet input sRepertoire = Range("S1_FP").Value sNomFichier = Range("S1_FN").Value DOS = 0 'Checking if the file is already in DOS format iFile = FreeFile Open sRepertoire & sNomFichier For Input As #iFile Do Until EOF(iFile) Line Input #iFile, data If InStr(data, vbCrLf) <> 0 Then DOS = 1 End If Loop MsgBox (DOS) Close #iFile 'UNIX file format to DOS: If DOS = 0 Then Open sRepertoire & sNomFichier For Binary As #iFile FileLength = LOF(iFile) strTemp = String(FileLength, Chr(0)) Get #iFile, 1, strTemp strTemp = Replace(strTemp, vbLf, vbCrLf) Put #iFile, 1, strTemp Close #iFile End If
En espérant avoir été clair dans l'explication de mon problème, je vous remercie par avance de votre aide.
Cordialement,
Partager