Modifier un fichier.data en vba
Résolu/Fermé
Simon-B
Messages postés
5
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
-
22 avril 2011 à 09:17
Simon-B Messages postés 5 Date d'inscription vendredi 22 avril 2011 Statut Membre Dernière intervention 29 avril 2011 - 29 avril 2011 à 08:37
Simon-B Messages postés 5 Date d'inscription vendredi 22 avril 2011 Statut Membre Dernière intervention 29 avril 2011 - 29 avril 2011 à 08:37
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
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
A voir également:
- Modifier un fichier.data en vba
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Comment modifier un pdf - Guide
- Modifier story facebook - Guide
- Modifier sa voix en direct - Guide
6 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
22 avril 2011 à 13:11
22 avril 2011 à 13:11
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 :
;o)
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)
Simon-B
Messages postés
5
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
22 avril 2011 à 15:32
22 avril 2011 à 15:32
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'
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'
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
22 avril 2011 à 22:33
22 avril 2011 à 22:33
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.
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.
Simon-B
Messages postés
5
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
28 avril 2011 à 11:52
28 avril 2011 à 11:52
(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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Simon-B
Messages postés
5
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
28 avril 2011 à 15:29
28 avril 2011 à 15:29
up
Simon-B
Messages postés
5
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
29 avril 2011
29 avril 2011 à 08:37
29 avril 2011 à 08:37
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")
d'où la boucle infinie puisque il ouvrai un fichier vide (a cause, je pense, du "on error resume next")