OVH Cloud OVH Cloud

excel et fichier TXT

4 réponses
Avatar
Bruno
Bonjour à tous,

Je stock des données saisies à partir d'un userform dans un fichier texte en
mode append. Avantage ? rapidité...et surtout plusieurs utilisateurs
peuvent silmultanément travailler en "read only" tandis que les données
encodées sont conservées.
Pour X raisons je dois parfois supprimer un enregistrement noyé au milieu
des autres.
Je sais comment le trouver, ça pas de problème, mais comment effacer la
ligne correspondante dans le fichier texte ???
je suppose en passant d'append à write, mais après ?

Si quelqu'un avait une solution....
Un grand merci d'avance...
Bruno

4 réponses

Avatar
Pascal Engelmajer
Salut,
en utilisant une instruction de chercher-remplacer dans une chaine, quitte à
avoir recours au expressions régulières (référence à rajouteur)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Bruno" a écrit dans le message de news:
401601ae$0$783$
Bonjour à tous,

Je stock des données saisies à partir d'un userform dans un fichier texte
en

mode append. Avantage ? rapidité...et surtout plusieurs utilisateurs
peuvent silmultanément travailler en "read only" tandis que les données
encodées sont conservées.
Pour X raisons je dois parfois supprimer un enregistrement noyé au milieu
des autres.
Je sais comment le trouver, ça pas de problème, mais comment effacer la
ligne correspondante dans le fichier texte ???
je suppose en passant d'append à write, mais après ?

Si quelqu'un avait une solution....
Un grand merci d'avance...
Bruno




Avatar
Clément Marcotte
Bonjour,

Avec quelque chose de ce genre-là
Sub YEnAUnDeTrop
open "fichier1" for input as 1
open "fichier2" for output as 2
do while not eof(1)
lineinput #1, laligne
if laligne <> "Nabuchodonosor" then
print #2, laligne
end if
loop
close
kill "fichier1"
end sub

"Bruno" a écrit dans le message de
news:401601ae$0$783$
Bonjour à tous,

Je stock des données saisies à partir d'un userform dans un fichier
texte en

mode append. Avantage ? rapidité...et surtout plusieurs
utilisateurs

peuvent silmultanément travailler en "read only" tandis que les
données

encodées sont conservées.
Pour X raisons je dois parfois supprimer un enregistrement noyé au
milieu

des autres.
Je sais comment le trouver, ça pas de problème, mais comment effacer
la

ligne correspondante dans le fichier texte ???
je suppose en passant d'append à write, mais après ?

Si quelqu'un avait une solution....
Un grand merci d'avance...
Bruno




Avatar
Bruno
Merci pour votre aide à tous les deux...
Je vais m'empresser de travailler sur les deux pistes...
A+++
Bruno

"Bruno" a écrit dans le message de
news:401601ae$0$783$
Bonjour à tous,

Je stock des données saisies à partir d'un userform dans un fichier texte
en

mode append. Avantage ? rapidité...et surtout plusieurs utilisateurs
peuvent silmultanément travailler en "read only" tandis que les données
encodées sont conservées.
Pour X raisons je dois parfois supprimer un enregistrement noyé au milieu
des autres.
Je sais comment le trouver, ça pas de problème, mais comment effacer la
ligne correspondante dans le fichier texte ???
je suppose en passant d'append à write, mais après ?

Si quelqu'un avait une solution....
Un grand merci d'avance...
Bruno




Avatar
Frédéric Sigonneau
Bonsoir,

Un "enregistrement noyé au milieu des autres" peut avoir, AMA, deux
interprétations :
- S'il s'agit de supprimer une chaîne dans une ligne du fichier texte (donc une
partie d'une ligne seulement), essaye ce code :

Sub SupprChaine(Fichier$, Chaine$)
Dim fso, f, tmp
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Fichier, 1)
tmp = Join(Split(f.readall, Chaine), "")
Set f = fso.OpenTextFile(Fichier, 2, True)
f.write (tmp)
End Sub

- S'il s'agit de supprimer une ligne entière, dont le contenu est connu (et
transmis à la variable Chaine), essaye plutôt avec celui-ci :

Sub SupprLigne(Fichier$, Chaine$)
Const ForReading = 1, ForWriting = 2
Dim fso, f, Arr, i&
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile(Fichier, 1)
Arr = Split(f.readall, vbNewLine)
Set f = fso.OpenTextFile(Fichier, 2, True)
For i = LBound(Arr) To UBound(Arr)
If Arr(i) <> "" And InStr(1, Arr(i), Chaine) = 0 Then f.writeline Arr(i)
Next
End Sub

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour à tous,

Je stock des données saisies à partir d'un userform dans un fichier texte en
mode append. Avantage ? rapidité...et surtout plusieurs utilisateurs
peuvent silmultanément travailler en "read only" tandis que les données
encodées sont conservées.
Pour X raisons je dois parfois supprimer un enregistrement noyé au milieu
des autres.
Je sais comment le trouver, ça pas de problème, mais comment effacer la
ligne correspondante dans le fichier texte ???
je suppose en passant d'append à write, mais après ?

Si quelqu'un avait une solution....
Un grand merci d'avance...
Bruno