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

modif contenu texte dans file csv

8 réponses
Avatar
jipi
Bonjour,

J'ai besoin de faire une petite macro pour pour aller=20
chercher des textes pr=E9cis, et les remplacer, dans un=20
fichier csv avant importation (en plus j'ai des "=20
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'=E9crire,=20
d'ajouter du texte mais comment aller rechercher un texte=20
pr=E9cis et le remplacer ? L=E0 je suis sec.

Merci les pros pour votre aide!

jipi

8 réponses

Avatar
MJD
Pourquoi n'essaies tu pas de l'ouvrir dans WORD puis de remplacer les " par
rien et de rechercher ton texte aussi dans word
puis tu l'enregistres en conservant son format initial

mjd


Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un texte
précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi



Avatar
denis P
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans une variable
"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un texte
précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi
Avatar
jipi
Bonjour,

Merci de ta réponse, toutefois elle ne coorespond pas à
mon besoin, je ne me suis pas suffisamment bien exprimé :
dans mes lignes d'enregistrement j'ai à la fois du texte
et des valeurs et mon but est de supprimer les caractères
parasites (des " en plein champ texte : devant grandes et
devant l'hopi) cf mon fichier test
'************************************************
"ce";3;"ième fichier";"est un test"
"où il va se";;"passer ";"des "grandes choses"
"si on";;"ne va pas";"à "l'hopi de suite"
"ce sera";3000;"fois tant mieux"
'************************************************


jipi
-----Message d'origine-----
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans
une variable

"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''

'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''

"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un texte
précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi


.



Avatar
denis P
Et comme ça ?
en utilisant "Line Input #1, Tbl(I)" à la place de "Input #1, Tbl(I)".
Là cela enlève tout les ".
Si tu veux garder les " dans le texte il te faudra lire chaque ligne
caractère par caractère,
si ;" --> enlever le "
si car quelconque" ---> ne pas enlever le "
denis p.


Option Explicit

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Sub ModifFichierTexte()
Dim Tbl()
Dim Ln
Dim I As Integer
'ouvre le fichier texte en lecture
Open "c:testT.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Line Input #1, Tbl(I)
'Debug.Print Tbl(I)
Loop
'Debug.Print "************************************"
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Debug.Print Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


"jipi" a écrit dans le message de
news:278601c4ddfc$35e1e3f0$
Bonjour,

Merci de ta réponse, toutefois elle ne coorespond pas à
mon besoin, je ne me suis pas suffisamment bien exprimé :
dans mes lignes d'enregistrement j'ai à la fois du texte
et des valeurs et mon but est de supprimer les caractères
parasites (des " en plein champ texte : devant grandes et
devant l'hopi) cf mon fichier test
'************************************************
"ce";3;"ième fichier";"est un test"
"où il va se";;"passer ";"des "grandes choses"
"si on";;"ne va pas";"à "l'hopi de suite"
"ce sera";3000;"fois tant mieux"
'************************************************


jipi
-----Message d'origine-----
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans
une variable

"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''

'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''

"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un texte
précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi


.



Avatar
jipi
Bonjour Denis,

Je me suis inspiré de ta réponse et ai trouvé la solution
à mon pb dans la partie supprime les guillemets
(parasites), j'ai écrit
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), " """, " ")
Next I
et ça me donne le résultat recherché.

Merci
A+

jipi

-----Message d'origine-----
Et comme ça ?
en utilisant "Line Input #1, Tbl(I)" à la place
de "Input #1, Tbl(I)".

Là cela enlève tout les ".
Si tu veux garder les " dans le texte il te faudra lire
chaque ligne

caractère par caractère,
si ;" --> enlever le "
si car quelconque" ---> ne pas enlever le "
denis p.


Option Explicit

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''


Sub ModifFichierTexte()
Dim Tbl()
Dim Ln
Dim I As Integer
'ouvre le fichier texte en lecture
Open "c:testT.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Line Input #1, Tbl(I)
'Debug.Print Tbl(I)
Loop
'Debug.Print "************************************"
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Debug.Print Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''



"jipi" a écrit dans le message de
news:278601c4ddfc$35e1e3f0$
Bonjour,

Merci de ta réponse, toutefois elle ne coorespond pas à
mon besoin, je ne me suis pas suffisamment bien exprimé :
dans mes lignes d'enregistrement j'ai à la fois du texte
et des valeurs et mon but est de supprimer les caractères
parasites (des " en plein champ texte : devant grandes et
devant l'hopi) cf mon fichier test
'************************************************
"ce";3;"ième fichier";"est un test"
"où il va se";;"passer ";"des "grandes choses"
"si on";;"ne va pas";"à "l'hopi de suite"
"ce sera";3000;"fois tant mieux"
'************************************************


jipi
-----Message d'origine-----
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans
une variable

"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


'''''''''''''''''''
'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


''''''''''''
"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un
texte


précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi


.




.




Avatar
jipi
Re bonsoir Denis
J'ai un pb I s'arrête à 32767 hors j'ai un fichier de
95000 lignes que je souhaire en une seule passe, puis le
faire et si oui comment ?

Merci de ton aide

jipi
-----Message d'origine-----
Et comme ça ?
en utilisant "Line Input #1, Tbl(I)" à la place
de "Input #1, Tbl(I)".

Là cela enlève tout les ".
Si tu veux garder les " dans le texte il te faudra lire
chaque ligne

caractère par caractère,
si ;" --> enlever le "
si car quelconque" ---> ne pas enlever le "
denis p.


Option Explicit

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''


Sub ModifFichierTexte()
Dim Tbl()
Dim Ln
Dim I As Integer
'ouvre le fichier texte en lecture
Open "c:testT.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Line Input #1, Tbl(I)
'Debug.Print Tbl(I)
Loop
'Debug.Print "************************************"
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Debug.Print Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''



"jipi" a écrit dans le message de
news:278601c4ddfc$35e1e3f0$
Bonjour,

Merci de ta réponse, toutefois elle ne coorespond pas à
mon besoin, je ne me suis pas suffisamment bien exprimé :
dans mes lignes d'enregistrement j'ai à la fois du texte
et des valeurs et mon but est de supprimer les caractères
parasites (des " en plein champ texte : devant grandes et
devant l'hopi) cf mon fichier test
'************************************************
"ce";3;"ième fichier";"est un test"
"où il va se";;"passer ";"des "grandes choses"
"si on";;"ne va pas";"à "l'hopi de suite"
"ce sera";3000;"fois tant mieux"
'************************************************


jipi
-----Message d'origine-----
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans
une variable

"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


'''''''''''''''''''
'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


''''''''''''
"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un
texte


précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi


.




.




Avatar
Starwing
Essaie
Dim I as Double

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--
"jipi" a écrit dans le message de
news:0f6d01c4dedd$00a664e0$
Re bonsoir Denis
J'ai un pb I s'arrête à 32767 hors j'ai un fichier de
95000 lignes que je souhaire en une seule passe, puis le
faire et si oui comment ?

Merci de ton aide

jipi
-----Message d'origine-----
Et comme ça ?
en utilisant "Line Input #1, Tbl(I)" à la place
de "Input #1, Tbl(I)".

Là cela enlève tout les ".
Si tu veux garder les " dans le texte il te faudra lire
chaque ligne

caractère par caractère,
si ;" --> enlever le "
si car quelconque" ---> ne pas enlever le "
denis p.


Option Explicit

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''


Sub ModifFichierTexte()
Dim Tbl()
Dim Ln
Dim I As Integer
'ouvre le fichier texte en lecture
Open "c:testT.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Line Input #1, Tbl(I)
'Debug.Print Tbl(I)
Loop
'Debug.Print "************************************"
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Debug.Print Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''



"jipi" a écrit dans le message de
news:278601c4ddfc$35e1e3f0$
Bonjour,

Merci de ta réponse, toutefois elle ne coorespond pas à
mon besoin, je ne me suis pas suffisamment bien exprimé :
dans mes lignes d'enregistrement j'ai à la fois du texte
et des valeurs et mon but est de supprimer les caractères
parasites (des " en plein champ texte : devant grandes et
devant l'hopi) cf mon fichier test
'************************************************
"ce";3;"ième fichier";"est un test"
"où il va se";;"passer ";"des "grandes choses"
"si on";;"ne va pas";"à "l'hopi de suite"
"ce sera";3000;"fois tant mieux"
'************************************************


jipi
-----Message d'origine-----
Salut
A adapté....
1 lire tout le fichier et le mettre ligne par ligne dans
une variable

"Tbl()"
2 fait tes manip sur Tbl
3 écrire le nouveau fichier
denis p.

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


'''''''''''''''''''
'''''
Sub ModifFichierTexte()
Dim Tbl()
Dim I As Integer
'ouvre le fichier texte en lecture
Open "C:Test.txt" For Input As #1
'récupère toutes les valeurs
'dans un tableau
Do While Not EOF(1)
I = I + 1
ReDim Preserve Tbl(1 To I)
Input #1, Tbl(I)
Loop
'si le fichier est vide...
If I = 0 Then
Close #1
MsgBox "Le fichier ne contient aucune données !"
Exit Sub
End If
'supprime les guillemets
For I = 1 To UBound(Tbl)
Tbl(I) = Replace(Tbl(I), """", "")
Next I
'referme le fichier avant de le ré-ouvrir
'en écriture
Close #1
Open "C:Test.txt" For Output As #1
'ré-inscrit les valeurs et referme
For I = 1 To UBound(Tbl)
Print #1, Tbl(I)
Next I
Close #1
Erase Tbl
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'


''''''''''''
"jipi" a écrit dans le message de
news:26b101c4ddda$449b6460$
Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un
texte


précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi


.




.




Avatar
jipi
Bonsoir,

ok pour les fichiers avec énormément de lignes,
effectivement sans changer le format et de plus c'est
rapide!

jipi

-----Message d'origine-----
Pourquoi n'essaies tu pas de l'ouvrir dans WORD puis de
remplacer les " par

rien et de rechercher ton texte aussi dans word
puis tu l'enregistres en conservant son format initial

mjd


Bonjour,

J'ai besoin de faire une petite macro pour pour aller
chercher des textes précis, et les remplacer, dans un
fichier csv avant importation (en plus j'ai des "
parasites qui me polluent mon import).

La commande OpenText me permet de lire, d'écrire,
d'ajouter du texte mais comment aller rechercher un
texte


précis et le remplacer ? Là je suis sec.

Merci les pros pour votre aide!

jipi

.