Merci LE TROLL,
J'ai essaye, cela ecrit bien dans le fichier mais pas à la bonne position,
le premier E
est à la ligne 19 position 66 le deuxieme ligne 25 position 88 le
troisieme
ligne 31 position 110........
Sinon comment savoir le nombre d'enregistrement pour la boucle car mon
fichier varie
Merci pour tes lumieres.
@+
Yannick
"LE TROLL" a écrit :Salut,
Si le fichier txt est petit, ça va aussi vite de le faire à la main,
sinon:
Comme les datas sont fixes (dis-tu), tu peux accéder à l'octet en
écrivant en mode binaire:
Dim p1 As Integer
Dim i As Long
ChDrive App.Path
ChDir App.Path
p1 = FreeFile
Open "nomFichier.txt" For Binary As p1
for i = 1 to nombreD'enregistrement
Put p1, (784 * i), "E"
next i
close p1
Je ne crois pas qu'il y ait d'autres façons de modifier un fichier en
VB/Dos
(pas de mode "modif" hélas)...
Ou il faut lire le fichier, modifier par variable et réécrire ailleurs,
puis
renommer dans le fichier initial, et supprimer le doublon...
Si ça ne marche pas utilise des variables à la place des calculs pour
passe
les paramètres:
Dim p2 As Long
Dim o As String * 1
p = 784 * i
o = "E"
Put p1, p, o
---------
"yannick" a écrit dans le message de
news:
> Bonjour et bonne année à tous,
> j'ai un fichier txt (pas de separateurs de champs, longeur fixe) et
> j'aimerais mettre "E" à la position 784 pour chaque ligne.
> je pense l'importer dans une base mdb puis l'exporter.
> Je voudrais savoir quelle est l'instruction VB pour un format de
> longeur
> fixe?
> Je sais que la posistion 1 c'est tel champs , la 9 un autre etc...
> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>
> Merci pour les reponses.
>
> Yannick
>
Merci LE TROLL,
J'ai essaye, cela ecrit bien dans le fichier mais pas à la bonne position,
le premier E
est à la ligne 19 position 66 le deuxieme ligne 25 position 88 le
troisieme
ligne 31 position 110........
Sinon comment savoir le nombre d'enregistrement pour la boucle car mon
fichier varie
Merci pour tes lumieres.
@+
Yannick
"LE TROLL" a écrit :
Salut,
Si le fichier txt est petit, ça va aussi vite de le faire à la main,
sinon:
Comme les datas sont fixes (dis-tu), tu peux accéder à l'octet en
écrivant en mode binaire:
Dim p1 As Integer
Dim i As Long
ChDrive App.Path
ChDir App.Path
p1 = FreeFile
Open "nomFichier.txt" For Binary As p1
for i = 1 to nombreD'enregistrement
Put p1, (784 * i), "E"
next i
close p1
Je ne crois pas qu'il y ait d'autres façons de modifier un fichier en
VB/Dos
(pas de mode "modif" hélas)...
Ou il faut lire le fichier, modifier par variable et réécrire ailleurs,
puis
renommer dans le fichier initial, et supprimer le doublon...
Si ça ne marche pas utilise des variables à la place des calculs pour
passe
les paramètres:
Dim p2 As Long
Dim o As String * 1
p = 784 * i
o = "E"
Put p1, p, o
---------
"yannick" <yannick@discussions.microsoft.com> a écrit dans le message de
news: 2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
> Bonjour et bonne année à tous,
> j'ai un fichier txt (pas de separateurs de champs, longeur fixe) et
> j'aimerais mettre "E" à la position 784 pour chaque ligne.
> je pense l'importer dans une base mdb puis l'exporter.
> Je voudrais savoir quelle est l'instruction VB pour un format de
> longeur
> fixe?
> Je sais que la posistion 1 c'est tel champs , la 9 un autre etc...
> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>
> Merci pour les reponses.
>
> Yannick
>
Merci LE TROLL,
J'ai essaye, cela ecrit bien dans le fichier mais pas à la bonne position,
le premier E
est à la ligne 19 position 66 le deuxieme ligne 25 position 88 le
troisieme
ligne 31 position 110........
Sinon comment savoir le nombre d'enregistrement pour la boucle car mon
fichier varie
Merci pour tes lumieres.
@+
Yannick
"LE TROLL" a écrit :Salut,
Si le fichier txt est petit, ça va aussi vite de le faire à la main,
sinon:
Comme les datas sont fixes (dis-tu), tu peux accéder à l'octet en
écrivant en mode binaire:
Dim p1 As Integer
Dim i As Long
ChDrive App.Path
ChDir App.Path
p1 = FreeFile
Open "nomFichier.txt" For Binary As p1
for i = 1 to nombreD'enregistrement
Put p1, (784 * i), "E"
next i
close p1
Je ne crois pas qu'il y ait d'autres façons de modifier un fichier en
VB/Dos
(pas de mode "modif" hélas)...
Ou il faut lire le fichier, modifier par variable et réécrire ailleurs,
puis
renommer dans le fichier initial, et supprimer le doublon...
Si ça ne marche pas utilise des variables à la place des calculs pour
passe
les paramètres:
Dim p2 As Long
Dim o As String * 1
p = 784 * i
o = "E"
Put p1, p, o
---------
"yannick" a écrit dans le message de
news:
> Bonjour et bonne année à tous,
> j'ai un fichier txt (pas de separateurs de champs, longeur fixe) et
> j'aimerais mettre "E" à la position 784 pour chaque ligne.
> je pense l'importer dans une base mdb puis l'exporter.
> Je voudrais savoir quelle est l'instruction VB pour un format de
> longeur
> fixe?
> Je sais que la posistion 1 c'est tel champs , la 9 un autre etc...
> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>
> Merci pour les reponses.
>
> Yannick
>
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des lignes
avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
> manuellement que j'appuie sur espace pour chaque ligne à la position
> 784.
> Donc probleme.
> Peut -on remplacer tous les vides dans le fichier par la valeur
> espace? sachant que mon fichier s'arrete à la position 921.
>
> Merci pour ton aide.
>
> @+
>
> Yannick
>
>
>
>
> "ng" a écrit :
>
>> Salut,
>>
>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>> ci :
>>
>> Option Explicit
>>
>> Private Sub Form_Load()
>> Dim k As Integer, strBuffer As String, tblLine() As String
>>
>> '//ouverture du fichier en mode binaire pour tout recupérer,
>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>> chaque ligne)
>>
>> k = FreeFile
>> Open "c:1.txt" For Binary As #k
>> strBuffer = String$(LOF(k), vbNullChar)
>> Get #k, , strBuffer
>> Close #k
>>
>> '//séparation en plusieurs lignes
>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>> '//puis on boucle sur chaque ligne
>> For k = 0 To UBound(tblLine)
>> '//vérifie si la ligne est assez grande,
>> '//tu peux l'enlever si tu es sur
>> '//que c'est tjrs le cas (mais attention
>> '//aux lignes vides !)
>> If Len(tblLine(k)) >= 784 Then
>> '//change le caractère 784
>> Mid$(tblLine(k), 784, 1) = "E"
>> End If
>> Next
>>
>> '//on ecrit les modifs
>> k = FreeFile
>> Open "c:1.txt" For Output As #k
>> Print #k, Join(tblLine, vbCrLf);
>> Close #k
>>
>> Erase tblLine
>>
>> End Sub
>>
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Bonjour ng,
>>> je suis novice mais j'essaye de me depatouiller sous vb
>>> voici mon code
>>>
>>> Dim NomFic As String
>>> Dim NoFic As Integer
>>> Dim s As String
>>>
>>> NoFic = FreeFile
>>> NomFic = "articles.txt"
>>> Open NomFic For Binary Access Read As NoFic
>>>
>>> Do
>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>> Mid$(s, 784, 1) = "E"
>>> Line Input #NoFic, s
>>>
>>> Loop
>>> Close #NoFic
>>>
>>> Merci pour ton aide
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Peut-on voir ton code ?
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Merci Jean-Marc,
>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>> mid$(s,784,1) = "E"
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>> "Jean-Marc" a écrit :
>>>>>
>>>>>> "yannick" a écrit dans le
>>>>>> message de
>>>>>> news:
>>>>>>> Bonjour et bonne année à tous,
>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur fixe)
>>>>>>> et j'aimerais mettre "E" à la position 784 pour chaque ligne.
>>>>>>> je pense l'importer dans une base mdb puis l'exporter.
>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format de
>>>>>>> longeur fixe? Je sais que la posistion 1 c'est tel champs , la 9
>>>>>>> un autre etc...
>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Si les record sont organisés en lignes, alors c'est tout simple.
>>>>>> Lire le fichier ligne par ligne, puis pour écrire à la position
>>>>>> 784, faire ceci:
>>>>>>
>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>> mid$(s,784,1) = "E"
>>>>>>
>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les lignes
>>>>>> ainsi modifiées. Ensuite, on écrase le fichier original et on
>>>>>> renomme le nouveau fichier avec le nom de l'original.
>>>>>>
>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>> juste une affaire de gout.
>>>>>>
>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>
>>>>>> hmm... pas sur que je sois très clair...
>>>>>>
>>>>>> --
>>>>>> Jean-marc
>>>>>> "There are only 10 kind of people
>>>>>> those who understand binary and those who don't."
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des lignes
avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
> manuellement que j'appuie sur espace pour chaque ligne à la position
> 784.
> Donc probleme.
> Peut -on remplacer tous les vides dans le fichier par la valeur
> espace? sachant que mon fichier s'arrete à la position 921.
>
> Merci pour ton aide.
>
> @+
>
> Yannick
>
>
>
>
> "ng" a écrit :
>
>> Salut,
>>
>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>> ci :
>>
>> Option Explicit
>>
>> Private Sub Form_Load()
>> Dim k As Integer, strBuffer As String, tblLine() As String
>>
>> '//ouverture du fichier en mode binaire pour tout recupérer,
>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>> chaque ligne)
>>
>> k = FreeFile
>> Open "c:1.txt" For Binary As #k
>> strBuffer = String$(LOF(k), vbNullChar)
>> Get #k, , strBuffer
>> Close #k
>>
>> '//séparation en plusieurs lignes
>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>> '//puis on boucle sur chaque ligne
>> For k = 0 To UBound(tblLine)
>> '//vérifie si la ligne est assez grande,
>> '//tu peux l'enlever si tu es sur
>> '//que c'est tjrs le cas (mais attention
>> '//aux lignes vides !)
>> If Len(tblLine(k)) >= 784 Then
>> '//change le caractère 784
>> Mid$(tblLine(k), 784, 1) = "E"
>> End If
>> Next
>>
>> '//on ecrit les modifs
>> k = FreeFile
>> Open "c:1.txt" For Output As #k
>> Print #k, Join(tblLine, vbCrLf);
>> Close #k
>>
>> Erase tblLine
>>
>> End Sub
>>
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Bonjour ng,
>>> je suis novice mais j'essaye de me depatouiller sous vb
>>> voici mon code
>>>
>>> Dim NomFic As String
>>> Dim NoFic As Integer
>>> Dim s As String
>>>
>>> NoFic = FreeFile
>>> NomFic = "articles.txt"
>>> Open NomFic For Binary Access Read As NoFic
>>>
>>> Do
>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>> Mid$(s, 784, 1) = "E"
>>> Line Input #NoFic, s
>>>
>>> Loop
>>> Close #NoFic
>>>
>>> Merci pour ton aide
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Peut-on voir ton code ?
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Merci Jean-Marc,
>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>> mid$(s,784,1) = "E"
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>> "Jean-Marc" a écrit :
>>>>>
>>>>>> "yannick" <yannick@discussions.microsoft.com> a écrit dans le
>>>>>> message de
>>>>>> news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
>>>>>>> Bonjour et bonne année à tous,
>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur fixe)
>>>>>>> et j'aimerais mettre "E" à la position 784 pour chaque ligne.
>>>>>>> je pense l'importer dans une base mdb puis l'exporter.
>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format de
>>>>>>> longeur fixe? Je sais que la posistion 1 c'est tel champs , la 9
>>>>>>> un autre etc...
>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Si les record sont organisés en lignes, alors c'est tout simple.
>>>>>> Lire le fichier ligne par ligne, puis pour écrire à la position
>>>>>> 784, faire ceci:
>>>>>>
>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>> mid$(s,784,1) = "E"
>>>>>>
>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les lignes
>>>>>> ainsi modifiées. Ensuite, on écrase le fichier original et on
>>>>>> renomme le nouveau fichier avec le nom de l'original.
>>>>>>
>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>> juste une affaire de gout.
>>>>>>
>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>
>>>>>> hmm... pas sur que je sois très clair...
>>>>>>
>>>>>> --
>>>>>> Jean-marc
>>>>>> "There are only 10 kind of people
>>>>>> those who understand binary and those who don't."
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des lignes
avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
> manuellement que j'appuie sur espace pour chaque ligne à la position
> 784.
> Donc probleme.
> Peut -on remplacer tous les vides dans le fichier par la valeur
> espace? sachant que mon fichier s'arrete à la position 921.
>
> Merci pour ton aide.
>
> @+
>
> Yannick
>
>
>
>
> "ng" a écrit :
>
>> Salut,
>>
>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>> ci :
>>
>> Option Explicit
>>
>> Private Sub Form_Load()
>> Dim k As Integer, strBuffer As String, tblLine() As String
>>
>> '//ouverture du fichier en mode binaire pour tout recupérer,
>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>> chaque ligne)
>>
>> k = FreeFile
>> Open "c:1.txt" For Binary As #k
>> strBuffer = String$(LOF(k), vbNullChar)
>> Get #k, , strBuffer
>> Close #k
>>
>> '//séparation en plusieurs lignes
>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>> '//puis on boucle sur chaque ligne
>> For k = 0 To UBound(tblLine)
>> '//vérifie si la ligne est assez grande,
>> '//tu peux l'enlever si tu es sur
>> '//que c'est tjrs le cas (mais attention
>> '//aux lignes vides !)
>> If Len(tblLine(k)) >= 784 Then
>> '//change le caractère 784
>> Mid$(tblLine(k), 784, 1) = "E"
>> End If
>> Next
>>
>> '//on ecrit les modifs
>> k = FreeFile
>> Open "c:1.txt" For Output As #k
>> Print #k, Join(tblLine, vbCrLf);
>> Close #k
>>
>> Erase tblLine
>>
>> End Sub
>>
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Bonjour ng,
>>> je suis novice mais j'essaye de me depatouiller sous vb
>>> voici mon code
>>>
>>> Dim NomFic As String
>>> Dim NoFic As Integer
>>> Dim s As String
>>>
>>> NoFic = FreeFile
>>> NomFic = "articles.txt"
>>> Open NomFic For Binary Access Read As NoFic
>>>
>>> Do
>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>> Mid$(s, 784, 1) = "E"
>>> Line Input #NoFic, s
>>>
>>> Loop
>>> Close #NoFic
>>>
>>> Merci pour ton aide
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Peut-on voir ton code ?
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Merci Jean-Marc,
>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>> mid$(s,784,1) = "E"
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>> "Jean-Marc" a écrit :
>>>>>
>>>>>> "yannick" a écrit dans le
>>>>>> message de
>>>>>> news:
>>>>>>> Bonjour et bonne année à tous,
>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur fixe)
>>>>>>> et j'aimerais mettre "E" à la position 784 pour chaque ligne.
>>>>>>> je pense l'importer dans une base mdb puis l'exporter.
>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format de
>>>>>>> longeur fixe? Je sais que la posistion 1 c'est tel champs , la 9
>>>>>>> un autre etc...
>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Si les record sont organisés en lignes, alors c'est tout simple.
>>>>>> Lire le fichier ligne par ligne, puis pour écrire à la position
>>>>>> 784, faire ceci:
>>>>>>
>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>> mid$(s,784,1) = "E"
>>>>>>
>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les lignes
>>>>>> ainsi modifiées. Ensuite, on écrase le fichier original et on
>>>>>> renomme le nouveau fichier avec le nom de l'original.
>>>>>>
>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>> juste une affaire de gout.
>>>>>>
>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>
>>>>>> hmm... pas sur que je sois très clair...
>>>>>>
>>>>>> --
>>>>>> Jean-marc
>>>>>> "There are only 10 kind of people
>>>>>> those who understand binary and those who don't."
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la position
784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme celui
ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis l'exporter.
Je voudrais savoir quelle est l'instruction VB pour un format
de longeur fixe? Je sais que la posistion 1 c'est tel champs
, la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à la
position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier original
et on renomme le nouveau fichier avec le nom de l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la position
784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :
Salut,
Line Input n'est pas très rapide, essaye plutot un code comme celui
ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :
Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :
"yannick" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis l'exporter.
Je voudrais savoir quelle est l'instruction VB pour un format
de longeur fixe? Je sais que la posistion 1 c'est tel champs
, la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à la
position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier original
et on renomme le nouveau fichier avec le nom de l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la position
784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme celui
ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis l'exporter.
Je voudrais savoir quelle est l'instruction VB pour un format
de longeur fixe? Je sais que la posistion 1 c'est tel champs
, la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à la
position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier original
et on renomme le nouveau fichier avec le nom de l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" a écrit dans le
>>>>>>>> message de
>>>>>>>> news:
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" <yannick@discussions.microsoft.com> a écrit dans le
>>>>>>>> message de
>>>>>>>> news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" a écrit dans le
>>>>>>>> message de
>>>>>>>> news:
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :
Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :
Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :
"yannick" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction
String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut
les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" a écrit dans le
>>>>>>>> message de
>>>>>>>> news:
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction
String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut
les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" <yannick@discussions.microsoft.com> a écrit dans le
>>>>>>>> message de
>>>>>>>> news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction
String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il faut
les
creér au préablable (fonction String$(" ", nb) qui est lpus rapide que
Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
> je creer un fichier texte je saisis
> 111111111
> 222222222
> 333333333
> 444444444
>
> je n'obtiens rien (pas de E colonne 784)
>
> si je fais la meme chose et que je vais sous dos pour faire un edit
> 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
> j'enregistre mon fichier 1.txt
> je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
> ete du laligne 1 colonne 784
>
> J'espere que tu as compris mon pb
>
> @+
>
> Yannick
>
> "ng" a écrit :
>
>> ???
>>
>> je ne comprends plus très bien là ?
>> quel est ton format de fichier exactement ?
>> Et a quoi correspondent ce que tu appelles positions ?
>> Car mon code fonctionne parfaitement bien pour un fichier ayant des
>> lignes avec au mois 784 caractères...
>>
>> --
>> Nicolas G.
>> FAQ VB : http://faq.vb.free.fr
>> API Guide : http://www.allapi.net
>> Google Groups : http://groups.google.fr/
>> MZ-Tools : http://www.mztools.com/
>>
>> yannick wrote:
>>> Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
>>> manuellement que j'appuie sur espace pour chaque ligne à la position
>>> 784.
>>> Donc probleme.
>>> Peut -on remplacer tous les vides dans le fichier par la valeur
>>> espace? sachant que mon fichier s'arrete à la position 921.
>>>
>>> Merci pour ton aide.
>>>
>>> @+
>>>
>>> Yannick
>>>
>>>
>>>
>>>
>>> "ng" a écrit :
>>>
>>>> Salut,
>>>>
>>>> Line Input n'est pas très rapide, essaye plutot un code comme celui
>>>> ci :
>>>>
>>>> Option Explicit
>>>>
>>>> Private Sub Form_Load()
>>>> Dim k As Integer, strBuffer As String, tblLine() As String
>>>>
>>>> '//ouverture du fichier en mode binaire pour tout recupérer,
>>>> '// c'est plus rapide comme (surtout qu'on veut travailler sur
>>>> chaque ligne)
>>>>
>>>> k = FreeFile
>>>> Open "c:1.txt" For Binary As #k
>>>> strBuffer = String$(LOF(k), vbNullChar)
>>>> Get #k, , strBuffer
>>>> Close #k
>>>>
>>>> '//séparation en plusieurs lignes
>>>> tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
>>>> '//puis on boucle sur chaque ligne
>>>> For k = 0 To UBound(tblLine)
>>>> '//vérifie si la ligne est assez grande,
>>>> '//tu peux l'enlever si tu es sur
>>>> '//que c'est tjrs le cas (mais attention
>>>> '//aux lignes vides !)
>>>> If Len(tblLine(k)) >= 784 Then
>>>> '//change le caractère 784
>>>> Mid$(tblLine(k), 784, 1) = "E"
>>>> End If
>>>> Next
>>>>
>>>> '//on ecrit les modifs
>>>> k = FreeFile
>>>> Open "c:1.txt" For Output As #k
>>>> Print #k, Join(tblLine, vbCrLf);
>>>> Close #k
>>>>
>>>> Erase tblLine
>>>>
>>>> End Sub
>>>>
>>>>
>>>> --
>>>> Nicolas G.
>>>> FAQ VB : http://faq.vb.free.fr
>>>> API Guide : http://www.allapi.net
>>>> Google Groups : http://groups.google.fr/
>>>> MZ-Tools : http://www.mztools.com/
>>>>
>>>> yannick wrote:
>>>>> Bonjour ng,
>>>>> je suis novice mais j'essaye de me depatouiller sous vb
>>>>> voici mon code
>>>>>
>>>>> Dim NomFic As String
>>>>> Dim NoFic As Integer
>>>>> Dim s As String
>>>>>
>>>>> NoFic = FreeFile
>>>>> NomFic = "articles.txt"
>>>>> Open NomFic For Binary Access Read As NoFic
>>>>>
>>>>> Do
>>>>> If Loc(NoFic) = FileLen(NomFic) Then Exit Do
>>>>> Mid$(s, 784, 1) = "E"
>>>>> Line Input #NoFic, s
>>>>>
>>>>> Loop
>>>>> Close #NoFic
>>>>>
>>>>> Merci pour ton aide
>>>>>
>>>>> @+
>>>>>
>>>>> Yannick
>>>>>
>>>>>
>>>>>
>>>>> "ng" a écrit :
>>>>>
>>>>>> Salut,
>>>>>>
>>>>>> Peut-on voir ton code ?
>>>>>>
>>>>>> --
>>>>>> Nicolas G.
>>>>>> FAQ VB : http://faq.vb.free.fr
>>>>>> API Guide : http://www.allapi.net
>>>>>> Google Groups : http://groups.google.fr/
>>>>>> MZ-Tools : http://www.mztools.com/
>>>>>>
>>>>>> yannick wrote:
>>>>>>> Merci Jean-Marc,
>>>>>>> je n' y arrive pas j'ai une erreur d'incompatibilte sur
>>>>>>> mid$(s,784,1) = "E"
>>>>>>>
>>>>>>> @+
>>>>>>>
>>>>>>> Yannick
>>>>>>>
>>>>>>> "Jean-Marc" a écrit :
>>>>>>>
>>>>>>>> "yannick" a écrit dans le
>>>>>>>> message de
>>>>>>>> news:
>>>>>>>>> Bonjour et bonne année à tous,
>>>>>>>>> j'ai un fichier txt (pas de separateurs de champs, longeur
>>>>>>>>> fixe) et j'aimerais mettre "E" à la position 784 pour chaque
>>>>>>>>> ligne. je pense l'importer dans une base mdb puis l'exporter.
>>>>>>>>> Je voudrais savoir quelle est l'instruction VB pour un format
>>>>>>>>> de longeur fixe? Je sais que la posistion 1 c'est tel champs
>>>>>>>>> , la 9 un autre etc...
>>>>>>>>> Ou peut-on ecrire d'irectement dans ce fichier txt ?
>>>>>>>>
>>>>>>>> Hello,
>>>>>>>>
>>>>>>>> Si les record sont organisés en lignes, alors c'est tout
>>>>>>>> simple. Lire le fichier ligne par ligne, puis pour écrire à la
>>>>>>>> position 784, faire ceci:
>>>>>>>>
>>>>>>>> soit s la chaine de caractere qui contient la ligne.
>>>>>>>> mid$(s,784,1) = "E"
>>>>>>>>
>>>>>>>> Il ne reste plus qu'à réécrire dans un second fichier les
>>>>>>>> lignes ainsi modifiées. Ensuite, on écrase le fichier original
>>>>>>>> et on renomme le nouveau fichier avec le nom de l'original.
>>>>>>>>
>>>>>>>> On pourrait directement écrire dans le fichier original, mais
>>>>>>>> bof.. je préfère passer par un fichier intermédiaire. C'est
>>>>>>>> juste une affaire de gout.
>>>>>>>>
>>>>>>>> Si tu veux des détails, voir l'aide de l'instruction "Open".
>>>>>>>> Mode Texte si tes records sont en lignes, mode Binary sinon.
>>>>>>>>
>>>>>>>> hmm... pas sur que je sois très clair...
>>>>>>>>
>>>>>>>> --
>>>>>>>> Jean-marc
>>>>>>>> "There are only 10 kind of people
>>>>>>>> those who understand binary and those who don't."
Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur chaque
ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)), " ")
End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur chaque
ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)), " ")
End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :
Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :
Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :
"yannick" <yannick@discussions.microsoft.com> a écrit dans le
message de
news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur chaque
ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)), " ")
End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est lpus
rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un edit
1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace et
j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant des
lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler
sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans le
message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour chaque
ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original, mais
bof.. je préfère passer par un fichier intermédiaire. C'est
juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction "Open".
Mode Texte si tes records sont en lignes, mode Binary sinon.
hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Heu...
Variable = fchier
Oui, mais si pas trop gros, car après ça peut être gigantesque 4 Go
par exemple, ce qui n'améliore pas les performances de la RAM... De
préférence, ne monter que l'enregistrement concerné...
----
"ng" a écrit dans le message de news:Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)),
" ") End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est
lpus rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un
edit 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace
et j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant
des lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout
recupérer, '// c'est plus rapide comme (surtout qu'on veut
travailler sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans
le message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour
chaque ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original,
mais bof.. je préfère passer par un fichier intermédiaire.
C'est juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction
"Open". Mode Texte si tes records sont en lignes, mode
Binary sinon. hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Heu...
Variable = fchier
Oui, mais si pas trop gros, car après ça peut être gigantesque 4 Go
par exemple, ce qui n'améliore pas les performances de la RAM... De
préférence, ne monter que l'enregistrement concerné...
----
"ng" <ng@ngsoft-fr.com> a écrit dans le message de news:
O59LheR8EHA.1292@TK2MSFTNGP10.phx.gbl...
Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)),
" ") End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :
Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est
lpus rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un
edit 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace
et j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :
???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant
des lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :
Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout
recupérer, '// c'est plus rapide comme (surtout qu'on veut
travailler sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :
Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:
Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :
"yannick" <yannick@discussions.microsoft.com> a écrit dans
le message de
news:2F06C912-ACBC-43AF-9AF2-83212D56CFAA@microsoft.com...
Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour
chaque ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original,
mais bof.. je préfère passer par un fichier intermédiaire.
C'est juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction
"Open". Mode Texte si tes records sont en lignes, mode
Binary sinon. hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Heu...
Variable = fchier
Oui, mais si pas trop gros, car après ça peut être gigantesque 4 Go
par exemple, ce qui n'améliore pas les performances de la RAM... De
préférence, ne monter que l'enregistrement concerné...
----
"ng" a écrit dans le message de news:Salut,
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout recupérer,
'// c'est plus rapide comme (surtout qu'on veut travailler sur
chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//y a t'il deja assez de caratères ?
If Len(tblLine(k)) < 784 Then
'//non ! alors on complète avec des espaces
tblLine(k) = tblLine(k) & String$(784 - Len(tblLine(k)),
" ") End If
'//puis on change le caratère
Mid$(tblLine(k), 784, 1) = "E"
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Il faut que mon fichier face 923 carateres donc comment utiliser la
fonction String$
pour qu' elle remplace par " "
Merci pour tes reponses
quelle galere je n'y arrive pas
@+
Yannick
"ng" a écrit :Salut,
Oui il faut que les 784 caratères existent c'est évident, sinon il
faut les creér au préablable (fonction String$(" ", nb) qui est
lpus rapide que Space$(nb) ).
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:je creer un fichier texte je saisis
111111111
222222222
333333333
444444444
je n'obtiens rien (pas de E colonne 784)
si je fais la meme chose et que je vais sous dos pour faire un
edit 1.txt à la ligne 1 colonne (position) 784 je fais barre d'espace
et j'enregistre mon fichier 1.txt
je lance l' exe et cela fonctionne pour la premiere ligne car j'ai
ete du laligne 1 colonne 784
J'espere que tu as compris mon pb
@+
Yannick
"ng" a écrit :???
je ne comprends plus très bien là ?
quel est ton format de fichier exactement ?
Et a quoi correspondent ce que tu appelles positions ?
Car mon code fonctionne parfaitement bien pour un fichier ayant
des lignes avec au mois 784 caractères...
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci cela fonctionne à condition que j'ouvre le fichier 1.txt
manuellement que j'appuie sur espace pour chaque ligne à la
position 784.
Donc probleme.
Peut -on remplacer tous les vides dans le fichier par la valeur
espace? sachant que mon fichier s'arrete à la position 921.
Merci pour ton aide.
@+
Yannick
"ng" a écrit :Salut,
Line Input n'est pas très rapide, essaye plutot un code comme
celui ci :
Option Explicit
Private Sub Form_Load()
Dim k As Integer, strBuffer As String, tblLine() As String
'//ouverture du fichier en mode binaire pour tout
recupérer, '// c'est plus rapide comme (surtout qu'on veut
travailler sur chaque ligne)
k = FreeFile
Open "c:1.txt" For Binary As #k
strBuffer = String$(LOF(k), vbNullChar)
Get #k, , strBuffer
Close #k
'//séparation en plusieurs lignes
tblLine = Split(strBuffer, vbCrLf): strBuffer = ""
'//puis on boucle sur chaque ligne
For k = 0 To UBound(tblLine)
'//vérifie si la ligne est assez grande,
'//tu peux l'enlever si tu es sur
'//que c'est tjrs le cas (mais attention
'//aux lignes vides !)
If Len(tblLine(k)) >= 784 Then
'//change le caractère 784
Mid$(tblLine(k), 784, 1) = "E"
End If
Next
'//on ecrit les modifs
k = FreeFile
Open "c:1.txt" For Output As #k
Print #k, Join(tblLine, vbCrLf);
Close #k
Erase tblLine
End Sub
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Bonjour ng,
je suis novice mais j'essaye de me depatouiller sous vb
voici mon code
Dim NomFic As String
Dim NoFic As Integer
Dim s As String
NoFic = FreeFile
NomFic = "articles.txt"
Open NomFic For Binary Access Read As NoFic
Do
If Loc(NoFic) = FileLen(NomFic) Then Exit Do
Mid$(s, 784, 1) = "E"
Line Input #NoFic, s
Loop
Close #NoFic
Merci pour ton aide
@+
Yannick
"ng" a écrit :Salut,
Peut-on voir ton code ?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
yannick wrote:Merci Jean-Marc,
je n' y arrive pas j'ai une erreur d'incompatibilte sur
mid$(s,784,1) = "E"
@+
Yannick
"Jean-Marc" a écrit :"yannick" a écrit dans
le message de
news:Bonjour et bonne année à tous,
j'ai un fichier txt (pas de separateurs de champs, longeur
fixe) et j'aimerais mettre "E" à la position 784 pour
chaque ligne. je pense l'importer dans une base mdb puis
l'exporter. Je voudrais savoir quelle est l'instruction VB
pour un format de longeur fixe? Je sais que la posistion 1
c'est tel champs , la 9 un autre etc...
Ou peut-on ecrire d'irectement dans ce fichier txt ?
Hello,
Si les record sont organisés en lignes, alors c'est tout
simple. Lire le fichier ligne par ligne, puis pour écrire à
la position 784, faire ceci:
soit s la chaine de caractere qui contient la ligne.
mid$(s,784,1) = "E"
Il ne reste plus qu'à réécrire dans un second fichier les
lignes ainsi modifiées. Ensuite, on écrase le fichier
original et on renomme le nouveau fichier avec le nom de
l'original.
On pourrait directement écrire dans le fichier original,
mais bof.. je préfère passer par un fichier intermédiaire.
C'est juste une affaire de gout.
Si tu veux des détails, voir l'aide de l'instruction
"Open". Mode Texte si tes records sont en lignes, mode
Binary sinon. hmm... pas sur que je sois très clair...
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
modifiées. Ensuite, on écrase le fichier original et on renomme le nouveau
fichier avec le nom de l'original.
Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
modifiées. Ensuite, on écrase le fichier original et on renomme le nouveau
fichier avec le nom de l'original.
Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
modifiées. Ensuite, on écrase le fichier original et on renomme le nouveau
fichier avec le nom de l'original.
Jean-Marc a écrit :
> Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
> modifiées. Ensuite, on écrase le fichier original et on renomme le
> fichier avec le nom de l'original.
Non ce n'est pas une bonne solution ça !!! Car si tu recrées "bètement"
un nouveau fichier, tu perds pleins d'informations propres à l'ancien
fichier tels que les permissions, les informations d'instant (date de
création, etc.), les éventuels stream associées au fichier, etc.
Il faut donc absolument rééecrire dans l'ancien fichier.
Jean-Marc a écrit :
> Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
> modifiées. Ensuite, on écrase le fichier original et on renomme le
> fichier avec le nom de l'original.
Non ce n'est pas une bonne solution ça !!! Car si tu recrées "bètement"
un nouveau fichier, tu perds pleins d'informations propres à l'ancien
fichier tels que les permissions, les informations d'instant (date de
création, etc.), les éventuels stream associées au fichier, etc.
Il faut donc absolument rééecrire dans l'ancien fichier.
Jean-Marc a écrit :
> Il ne reste plus qu'à réécrire dans un second fichier les lignes ainsi
> modifiées. Ensuite, on écrase le fichier original et on renomme le
> fichier avec le nom de l'original.
Non ce n'est pas une bonne solution ça !!! Car si tu recrées "bètement"
un nouveau fichier, tu perds pleins d'informations propres à l'ancien
fichier tels que les permissions, les informations d'instant (date de
création, etc.), les éventuels stream associées au fichier, etc.
Il faut donc absolument rééecrire dans l'ancien fichier.