Modifier un fichier.data en vba

Résolu
Bonjour,

je souhaite ouvrir un fichier .data généré par un logiciel et modifier une ligne précise (dont je connais l'emplacement) de ce fichier.
Mon problème est que je n'arrive pas a "sélectionner" la ligne qui me convient au sein du fichier. Je ne sais pas exactement quelle méthode utiliser pour ouvrir le fichier, et une fois ce fichier ouvert je ne vois pas comment parcourir le fichier (ouvert par défaut avec Excel)
J'espère avoir été clair.
D'avance merci

6 réponses

  1. problème résolu en fait lors de la définition du fichier a modifier j'écrivais .Data au lieu de .data...tout bêtement.
    d'où la boucle infinie puisque il ouvrai un fichier vide (a cause, je pense, du "on error resume next")
    1. (désolée de l'absence je n'étais pas très disponible)
      en fait le soucis c 'est que la variable 'chaine' est toujours vide...et lorsque je regarde le fichier temporaire créé il est vide sauf la ligne modifié qui prend la valeur voulue.

      lig = 1
      chemin = "C:\AMETest\simulations\chaines de traction" & nom
      On Error Resume Next
      fp = FreeFile
      Open chemin For Input As #fp
      While Not EOF(fp)
      Line Input #fp, chaine
      If lig = ligne Then
      Call EcrireFichier(text)
      Else
      Call EcrireFichier(chaine)
      End If
      lig = lig + 1
      Wend
      Close #fp

      End Sub
      Public Sub EcrireFichier(ByVal str As Variant)
      Dim fp As Integer
      Dim chemin As String

      On Error Resume Next
      fp = FreeFile
      chemin = "C:\AMETest\simulations\chaines de traction\resOut.data"
      Open chemin For Append As #fp
      Print #fp, str
      Close #fp

      End Sub
      1. Pour le savoir il suffit de passer en mode débogage et pas à pas (F8). Quand tu arrives sur la ligne juste en dessous de line input ..., tu passes la souris sur 'chaîne' et tu verras ce que contient la variable.

        En fait, la variable reçoit le contenu d'une ligne du fichier lu.

        Met ton code ici pour voir où tu as une boucle infinie.
        1. merci pour ton aide
          Cependant je pense mal adapter ton code puisque qu'il me conduit systématiquement à une boucle folle...je ne saisie pas bien a quoi renvoie 'chaine'
          1. Bonjour,

            Voilà un exemple, à toi de l'adapter à ton cas. Ici je sais que c'est la ligne 5 de mon fichier que je dois modifier :

            Option Explicit
            
            Public Sub main()
            
                LireFichier
                Kill ("C:\Monfichier.data")
                Name "C:\resOut.data" As "C:\Monfichier.data"
                
            End Sub
            
            Public Sub LireFichier()
            Dim fp As Integer
            Dim chemin As String
            Dim chaine As Variant
            Dim lig As Long
            
                lig = 1
                chemin = "C:\Monfichier.data"
                On Error Resume Next
                fp = FreeFile
                Open chemin For Input As #fp
                While Not EOF(fp)
                    Line Input #fp, chaine
                        If lig = 5 Then
                            Call EcrireFichier("J'ai changé cette ligne")
                        Else
                            Call EcrireFichier(chaine)
                        End If
                    lig = lig + 1
                Wend
                Close #fp
                
            End Sub
            
            Public Sub EcrireFichier(ByVal str As Variant)
            Dim fp As Integer
            Dim chemin As String
            
                On Error Resume Next
                fp = FreeFile
                
                chemin = "C:\resOut.data"
                Open chemin For Append As #fp
                Print #fp, str
                Close #fp
                
            End Sub
            


            ;o)