Modifier un fichier.data en vba

Résolu
Simon-B Messages postés 5 Statut Membre -  
Simon-B Messages postés 5 Statut Membre -
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. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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)
    0
  2. Simon-B Messages postés 5 Statut Membre
     
    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'
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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.
    0
  4. Simon-B Messages postés 5 Statut Membre
     
    (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
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Simon-B Messages postés 5 Statut Membre
     
    up
    0
  7. Simon-B Messages postés 5 Statut Membre
     
    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")
    0