Re
Essayez comme ceci
Sub test()
Dim sBuf As String, sTemp As String, sFileName As String
Dim textelig As String, texterepl As String
Dim iFileNum As Integer, I As Integer, ligne As Integer
Dim c As Range
With Sheets("DATA").ListObjects(1)
For Each c In .ListColumns(1).DataBodyRange
sFileName = .DataBodyRange(c.Row - .HeaderRowRange.Row, 7) & c.Value & ".txt" 'repertoire et nom du fichier txt
ligne = .DataBodyRange(c.Row - .HeaderRowRange.Row, 2) 'numero ligne en fichier text
textelig = .DataBodyRange(c.Row - .HeaderRowRange.Row, 3)'texte existant dans la ligne du fichier txt
texterepl = .DataBodyRange(c.Row - .HeaderRowRange.Row, 9)'texte à remplacer dans la ligne du fichier txt
iFileNum = FreeFile
Open sFileName For Input As iFileNum
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
I = I + 1
If I = ligne Then
sBuf = Replace(sBuf, textelig, texterepl)
End If
sTemp = sTemp & sBuf & vbCrLf
Loop
Close iFileNum
iFileNum = FreeFile
sFileName = .DataBodyRange(c.Row - .HeaderRowRange.Row, 7) & ".txt"
Open sFileName For Output As iFileNum
Print #iFileNum, sTemp
Close iFileNum
sTemp = ""
Next c
End With
End Sub
Il faut l'extension txt à vos fichiers
Le code changera le texte dans le fichier txt défini en colonne A de votre tableau en feuille DATA
si ok et terminé pensez à
Cordialement
Edit : attention j'ai modifié
- la ligne sfilename =... à la fin du code et rajouté stemp = "" à la fin du code
- les 4 lignes en dessous de For each c In....
Modifié sfilename à la fin du code