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) :

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

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.

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
Pourriez vous m'indiquer mes erreurs ou une méthode me permettant de conditionner cette conversion.
En espérant avoir été clair dans l'explication de mon problème, je vous remercie par avance de votre aide.

Cordialement,