Bonjour à tous,
Ne comprenant pas pourquoi la macro s’arrêtait après la lecture de la première ligne, je me suis décidé à mettre un msgbox du contenu de la première ligne et là en fait ma variable ContenuLigne contient une quinzaine de lignes pour une longueur de plus de 5000 caractères.
D'où ma question, est il possible d'identifier les retours chariot pour limiter la lecture ligne par ligne ?
Merci par avance de votre aide.
Sub LireFichierTexteParLigne()
Range("a4:n65000").ClearContents
Application.ScreenUpdating = False
On Error GoTo CodeErreur
Dim IndexFichier As Integer
Dim MonFichier As String
Dim ContenuLigne As String
Dim PosVirgule As Integer
Dim IndiceLigne As Integer
Dim IndiceColonne As Integer
IndiceLigne = 3
MoisRégul = Cells(1, 2)
MonFichier = Application.GetOpenFilename("Tous les Fichiers,*.*")
IndexFichier = FreeFile()
Open MonFichier For Input As #IndexFichier 'ouvre le fichier
While Not EOF(IndexFichier) '
Line Input #IndexFichier, ContenuLigne
PosVirgule = InStr(ContenuLigne, ",")
TypeLigne = Mid(ContenuLigne, 1, PosVirgule - 1)
If TypeLigne = "S21.G00.30.001" Then
IndiceLigne = IndiceLigne + 1
MoisRégulRef = ""
End If
ValeurLigne = Mid(ContenuLigne, PosVirgule + 1, 99)
ValeurLigne = Replace(ValeurLigne, "'", "")
Select Case TypeLigne
Case "S20.G00.05.003" 'N° Fraction
Cells(1, 11) = ValeurLigne
Case "S20.G00.05.009" 'Période Paie
Cells(1, 5) = ValeurLigne
Case "S21.G00.30.001" 'NIR
Cells(IndiceLigne, 1) = ValeurLigne
Case "S21.G00.30.002" 'NOM FAMILLE
Cells(IndiceLigne, 2) = ValeurLigne
eurLigne
End Select
Wend
Close #IndexFichier ' ferme le fichier
Application.ScreenUpdating = True
Exit Sub
CodeErreur:
MsgBox "Une erreur s'est produite..."
Application.ScreenUpdating = True
End Sub
EXCELlente après midi
Philippe