' cette procédure lit et insère bien toutes les lignes, sauf les lignes commençant par $ qui elles sont vides

Sub Tst()
Dim Fichier As Variant
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Text Files (*.CNC), *.cnc")
If Fichier <> False Then
Lire Fichier
End If
End Sub

Function Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1

' Séparateur Tabulation
Separateur = Chr(9)

Range("D2:C:C").ClearContents
NumFichier = FreeFile
iRow = 3

Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 3
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
Cells(iRow, iCol) = Ar(i)
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #NumFichier
End Function



' cette procédure lit et insère bien toutes les lignes, sauf les lignes commençant par $ qui elles sont remplacées par "1 CHF" ou "2 CHF"
' je pense que le problème est lié à la feuille Excel puisque dans le fichier xlsm original cette même fonction ne fait pas cette erreur.

' Nécessite d'activer la référence Microsoft ActiveX Data Objects > 2.5 - Librairie ADOStream
Function ReadUTFfile(ByVal Filepath As String, Cell As Range) As Integer
On Error Resume Next

    Dim adoStream As ADODB.Stream
    Dim tData As Variant
     
    Set adoStream = New ADODB.Stream
        With adoStream
            .Position = 0
            .Charset = "UTF-8"
            .Open
            .LoadFromFile Filepath
        End With
        
        tData = Split(adoStream.ReadText, vbCrLf)
        'Traitement des erreurs de lecture du programme
        
        If UBound(tData) > 0 Then
            Do While Len(tData(UBound(tData))) = 0
                ReDim Preserve tData(UBound(tData) - 1)
            Loop
            tData(1) = Replace(tData(1), "(                 )(          )(              )()", "()")
            tData(2) = "$1"
            tData(UBound(tData)) = "%"
            Cell.Resize(UBound(tData) + 1).Value = Application.Transpose(tData)
        End If
   
        adoStream.Close
    Set adoStream = Nothing

End Function

' Fichier exemple à importer

%
O04002
$1
(04-002)
(L38=106.14+3.94+55)
(L39=715-106.02-3.94-15.1)
G0Y0
M30
$2
N2001!
G201
G92S4000
G26
M30
%
