Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

manipulation de fichiers textes

6 réponses
Avatar
David
Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever tous les
3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je voudrais en
plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une ligne et de
décaller des cellules), est-ce possible ?

Merci de votre aide.

6 réponses

Avatar
Clément Marcotte
Bonjour,

Puisqu'il y a un peu beaucoup de divination, une réponse théorique.

Faut travailler avec 2 fichiers.

1) Le fichier d'origine en lecture et le fichier de destination en
écriture.

2) Lire une donnée, ou une ligne complète, du fichier d'origine et
épurer.

3) Écrire la donnée, ou la ligne épurée, dans le fichier de
destination.


"David" a écrit dans le message de
news:ehdPHbx%
Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever
tous les

3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je
voudrais en

plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une
ligne et de

décaller des cellules), est-ce possible ?

Merci de votre aide.




Avatar
j
comme dit clément :

'renommer le fichier
Name "c:zaza.txt" As "c:zaza_old.txt"
'ouvrir zaza en écriture
Open "c:zaza.txt" For Output As #2
'ouvrir zaza_old en lecture
Open "c:zaza_old.txt" For Input Access Read As #1
'lire zaza_old ligne par ligne
Do While Not EOF(1)
Line Input #1, truc
'recopier dans zaza après modif
Print #2, WorksheetFunction.Substitute(truc, "[1]", "")
Loop
'fermer
Close #1
Close #2
'secouer le cocotier
Kill "c:zaza_old.txt"


http://jacxl.free.fr



"Clément Marcotte" a écrit dans le message
de news: OA9yftx#
Bonjour,

Puisqu'il y a un peu beaucoup de divination, une réponse théorique.

Faut travailler avec 2 fichiers.

1) Le fichier d'origine en lecture et le fichier de destination en
écriture.

2) Lire une donnée, ou une ligne complète, du fichier d'origine et
épurer.

3) Écrire la donnée, ou la ligne épurée, dans le fichier de
destination.


"David" a écrit dans le message de
news:ehdPHbx%
Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever
tous les

3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je
voudrais en

plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une
ligne et de

décaller des cellules), est-ce possible ?

Merci de votre aide.







Avatar
Frédéric Sigonneau
Bonsoir,

Si tu travailles avec Excel 2000 ou + récent, la combinaison des fonctions Split
et Join peut faire ce que tu souhaites en une seule passe :

'===================== Sub ModifFichierTexte()
Dim fso, fich
Dim Fichier$, S$

Fichier = "D:fsdatas6OfficeVBAtest.txt" 'à adapter
Set fso = CreateObject("Scripting.FileSystemObject")
Set fich = fso.OpenTextFile(Fichier, 1)
S = Join(Split(fich.readall, "[1]"))
Set fich = fso.OpenTextFile(Fichier, 2)
fich.Write S
fich.Close
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 !

David a écrit:
Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever tous les
3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je voudrais en
plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une ligne et de
décaller des cellules), est-ce possible ?

Merci de votre aide.




Avatar
j
S = Join(Split(fich.readall, "[1]"))
frédéric, tu nous expliques comment ça marche split et join ?


"Frédéric Sigonneau" a écrit dans le
message de news:
Bonsoir,

Si tu travailles avec Excel 2000 ou + récent, la combinaison des fonctions
Split

et Join peut faire ce que tu souhaites en une seule passe :

'===================== > Sub ModifFichierTexte()
Dim fso, fich
Dim Fichier$, S$

Fichier = "D:fsdatas6OfficeVBAtest.txt" 'à adapter
Set fso = CreateObject("Scripting.FileSystemObject")
Set fich = fso.OpenTextFile(Fichier, 1)
S = Join(Split(fich.readall, "[1]"))
Set fich = fso.OpenTextFile(Fichier, 2)
fich.Write S
fich.Close
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 !

David a écrit:
Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever tous
les


3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je
voudrais en


plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une ligne
et de


décaller des cellules), est-ce possible ?

Merci de votre aide.







Avatar
Frédéric Sigonneau
Bonsoir ,

Split renvoie les différents morceaux d'une chaîne de caractères dans un
tableau, après découpage avec un délimiteur. Le délimiteur par défaut est
l'espace, ce qui fait que 'splitter' une phrase revient à en renvoyer tous les
mots dans un tableau.
Join fait l'inverse. Cette fonction reconstitue une chaîne de caractères à
partir des éléments d'un tableau. Elle sépare les différents éléments à l'aide
d'un délimiteur elle aussi, par défaut l'espace, comme pour Split.
En dehors d'opérations sur des tableaux, d'autant plus pratiques et rapides à
manipuler que Split ne nécessite aucune boucle pour les remplir, l'intérêt de
ces deux fonctions est aussi que quasiment n'importe quoi peut leur servir de
délimiteur, y compris rien du tout (une chaine vide) pour Join.
Exemples de l'utilisation de Split et Join pour manipuler des chaines de
caractères :

'====================== Sub SplitJoin()
Dim LaChaine$, LeDelimSplit$, LeDelimJoin$
Dim Arr, i&

LaChaine = "toto et tata et zozo et zaza"
LeDelimSplit = "et "
'remplissage du tableau
Arr = Split(LaChaine, LeDelimSplit)
'éléments de la chaîne :
For i = LBound(Arr) To UBound(Arr)
MsgBox Arr(i)
Next i
'reconstitution d'une chaine avec un autre délimiteur
LeDelimJoin = "ou "
MsgBox Join(Arr, LeDelimJoin)
'ou (autre délimiteur)
LeDelimJoin = ""
MsgBox Join(Arr, LeDelimJoin)

'la même chose, en une seule passe
'et avec les délimiteurs 'en dur'
MsgBox Join(Split(LaChaine, "et "), "")

'le troisième élément du tableau délimité
MsgBox Split(LaChaine, "et ")(2)

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 !

a écrit:
S = Join(Split(fich.readall, "[1]"))
frédéric, tu nous expliques comment ça marche split et join ?


"Frédéric Sigonneau" a écrit dans le
message de news:

Bonsoir,

Si tu travailles avec Excel 2000 ou + récent, la combinaison des fonctions


Split

et Join peut faire ce que tu souhaites en une seule passe :

'===================== >>Sub ModifFichierTexte()
Dim fso, fich
Dim Fichier$, S$

Fichier = "D:fsdatas6OfficeVBAtest.txt" 'à adapter
Set fso = CreateObject("Scripting.FileSystemObject")
Set fich = fso.OpenTextFile(Fichier, 1)
S = Join(Split(fich.readall, "[1]"))
Set fich = fso.OpenTextFile(Fichier, 2)
fich.Write S
fich.Close
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 !

David a écrit:

Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever tous


les


3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je


voudrais en


plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une ligne


et de


décaller des cellules), est-ce possible ?

Merci de votre aide.











Avatar
j
super, merci, je pensais que split ne pouvait que couper en deux...


"Frédéric Sigonneau" a écrit dans le
message de news:
Bonsoir ,

Split renvoie les différents morceaux d'une chaîne de caractères dans un
tableau, après découpage avec un délimiteur. Le délimiteur par défaut est
l'espace, ce qui fait que 'splitter' une phrase revient à en renvoyer tous
les

mots dans un tableau.
Join fait l'inverse. Cette fonction reconstitue une chaîne de caractères à
partir des éléments d'un tableau. Elle sépare les différents éléments à
l'aide

d'un délimiteur elle aussi, par défaut l'espace, comme pour Split.
En dehors d'opérations sur des tableaux, d'autant plus pratiques et
rapides à

manipuler que Split ne nécessite aucune boucle pour les remplir, l'intérêt
de

ces deux fonctions est aussi que quasiment n'importe quoi peut leur servir
de

délimiteur, y compris rien du tout (une chaine vide) pour Join.
Exemples de l'utilisation de Split et Join pour manipuler des chaines de
caractères :

'====================== > Sub SplitJoin()
Dim LaChaine$, LeDelimSplit$, LeDelimJoin$
Dim Arr, i&

LaChaine = "toto et tata et zozo et zaza"
LeDelimSplit = "et "
'remplissage du tableau
Arr = Split(LaChaine, LeDelimSplit)
'éléments de la chaîne :
For i = LBound(Arr) To UBound(Arr)
MsgBox Arr(i)
Next i
'reconstitution d'une chaine avec un autre délimiteur
LeDelimJoin = "ou "
MsgBox Join(Arr, LeDelimJoin)
'ou (autre délimiteur)
LeDelimJoin = ""
MsgBox Join(Arr, LeDelimJoin)

'la même chose, en une seule passe
'et avec les délimiteurs 'en dur'
MsgBox Join(Split(LaChaine, "et "), "")

'le troisième élément du tableau délimité
MsgBox Split(LaChaine, "et ")(2)

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 !

a écrit:
S = Join(Split(fich.readall, "[1]"))
frédéric, tu nous expliques comment ça marche split et join ?


"Frédéric Sigonneau" a écrit dans le
message de news:

Bonsoir,

Si tu travailles avec Excel 2000 ou + récent, la combinaison des
fonctions




Split

et Join peut faire ce que tu souhaites en une seule passe :

'===================== > >>Sub ModifFichierTexte()
Dim fso, fich
Dim Fichier$, S$

Fichier = "D:fsdatas6OfficeVBAtest.txt" 'à adapter
Set fso = CreateObject("Scripting.FileSystemObject")
Set fich = fso.OpenTextFile(Fichier, 1)
S = Join(Split(fich.readall, "[1]"))
Set fich = fso.OpenTextFile(Fichier, 2)
fich.Write S
fich.Close
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 !

David a écrit:

Salut,

Peut-on modifier l'intérieur d'un fichier txt via VBA, pour enlever
tous





les


3 caractères [1] ?

Je sais que l'on peut trouver cette chaîne de caractère, mais je


voudrais en


plus les supprimer toutes car elle m'empêche d'ouvrir le fichier
convenablement (cela a pour effet à l'ouverture, de rajouter une ligne


et de


décaller des cellules), est-ce possible ?

Merci de votre aide.