Bonjour,
je cherche a detruire une chaine de caractere connue dans un fichier texte.
Merci de votre aide
Bonjour,
je cherche a detruire une chaine de caractere connue dans un fichier texte.
Merci de votre aide
ben pour le principe... il faut lire le fichier fichier enlever la chaine et ré-écrire le fichier au même endroit...
Plusieurs possibilités :
1 - Lecutre ligne/Ligne du fichier .., modification de chaque ligne et écriture de la ligne modifié dans un fichier temporaire... en fin de transfert tu efface le fichier initial et renomme le fichier temporaire avec le nom "initial.."
2- Lecture de la totalité du fichier texte dans un buffer ( voir par exemple FileSystemObject... TextStream... puis écriture du fichier à l'endroit initial..
Tout d'abord :
Tu ouvre le fichier et réccupère la totalité du contenu dans une variable String :
Ensuite :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Dim Adresse As String Dim Contenu As String Adresse = "C:\MonFichier.txt" Contenu = Space(Filelen(Adresse)) Open Adresse For Binary As #1 Get #1,,Contenu Close #1
A) Si tu connais l'emplacement de la chaine dans le fichier tu découpe la variable (Left, Right, Mid sont des fonction qui peuvent t'aider)
B) Si tu ne connais pas l'emplacement du texte il existe deux cas :
1) Soit le texte à supprimer n'existe qu'une seule fois dans le fichier et tu en est sûr :
2) Soit tu sais qu'il sagit de la Xème fois qu'il apparait dans le fichier qu'il faut supprimer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim RemplaceStr As String Dim Adresse ... ... ... Contenu = Replace(Contenu, RemplaceStr, "")
Utilise InStr afin de localiser la chaine puis revient au A).
Enfin il ne te reste plus qu'a recréer le fichier :
Détruit le fichier éxistant :
Réécrit le nouveau fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Kill Adresse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Open Adresse For Binary As #1 Put #1,,Contenu Close #1
ca marche bien mais il y a un petit pb
quand on detruit la chaine on ne detruit pas la ligne et cela me pose un probleme apres quand je relis le fichier et que je le charge dans un combobox il me repond "depassement de capacite"
Si la chaine que tu dois detruire est une ligne complète, alors dans la chaine RemplaceStr n'oubli pas de rajouter le retour à la ligne (constante VbCrLf).
Il faut que RemplaceStr contienne la TOTALITE de ce que tu veux supprimer.
Bonsoir,
je voudrais supprimer une ligne dans un fichier texte mais sans laisser de ligne vide.
exemple:
je connais une chaine de caractere
j'ouvre un fichier texte et je cherche la chaine de caractere
une fois la chaine trouvee je lui demande de selectionner la ligne
je detruit la ligne
quand j'ouvre le fichier texte il ya:
c:\cao|roger
c:\cao|roger
c:\cao|roger
c:\cao|roger
la ligne vide corespond a la ligne detruire
comment faire svp?
Merci de votre aide
Comme il n'y a pas eu de réponse depuis une heure, j'émets juste un avis car je n'ai pas une réponse formelle.
Je pense qu'il faut créer un nouveau fichier, en ne tenant pas compte de la ligne à supprimer, puis naturellement effacer le fichier origine et renommer le nouveau fichier avec le nom de l'ancien.
http://www.developpez.net/forums/sho...d.php?t=226730
Le principe reste toujours le même.
A ce sujet, une réponse dans la discussion précédente plutôt que l'ouverture d'une nouvelle aurait montré, de ta part, un peu de respect pour ceux qui essayent de t'aider.
Merci de commencer par faire une recherche dans la FAQ ou dans le forum avant de poster. Cela te ferait gagner du temps et à nous aussi. Sur le lien que t'a donné AlainTech il y a un descriptif complet de ce qu'il faut faire.
Ps : Si tu as une question, poste la dans le dans l'autre sujet, cela evitera d'avoir des discussions dans tous les sens.
je ne voudrais pas gener qui que ce soit mais je suis novice en la matiere et je ne trouve pas de solution a mon pb
quand je detruit une ligne dans un fichier texte elle est remplacee par une ligne vide
j'ai bien mis le (vbclrf) dan la chaine remplace mais rien n'y fait
Merci de votre aide
tiens un exmple de traitement d'un fichier texte ligne à ligne..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Option Explicit Sub SupprimerLignevide() Dim f As Integer 'Numero fichier en lecture Dim g As Integer 'Numero fichier destination Dim stLigne As String 'ligne lue Dim stFicSource As String Dim stFicDest As String stFicSource = "c:\tmp\toto.txt" stFicDest = "c:\tmp\totoSansLignevide.txt" f = FreeFile 'Demande un numéro de fichier libre Open stFicSource For Input As #f g = FreeFile Open stFicDest For Output As #g 'Attention le fichier Sera écrasé.. While Not EOF(f) Line Input #f, stLigne If Len(stLigne) > 0 Then Print #g, stLigne Wend Close #f Close #g End Sub
je suis novice en la matiere et mon probleme est toujours la
quand je detruit la chaine elle est remplacee par une ligne vide
j'ai bien rajoute le vbclrf a la chaine a remplacer mais c'est toujours remplace par une ligne vide
voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Dim Contenu As String Open EspaceProeIni For Binary As #1 Contenu = Space(FileLen(EspaceProeIni)) Get #1, , Contenu Close #1 Dim RemplaceStr As String RemplaceStr = Text4.Text + vbclrf Contenu = Replace(Contenu, RemplaceStr, "") Text4.Text = Contenu Kill EspaceProeIni Open EspaceProeIni For Binary As #1 Put #1, , Contenu Close #1 Dim strTemp As String Dim strRecup As String Dim chartemp As String Dim Tbl As Variant Dim iPnt As Integer Dim iPntCombo As Integer Combo1.Clear Combo2_detruire_client.Clear Open EspaceProeIni For Input As #1 iPntCombo = 0 While Not EOF(1) Input #1, strTemp iPnt = 0 chartemp = "" While chartemp <> "|" iPnt = iPnt + 1 chartemp = Mid$(strTemp, iPnt, 1) Wend strRecup = Right$(strTemp, Len(strTemp) - iPnt) Combo1.AddItem strRecup Combo2_detruire_client.AddItem strRecup Wend Close #1 Frame_detruire_espace_client.Visible = False End Sub
Merci de votre aide
Ajoute les balises codes à ton post, il en sera plus lisible merci.
Ajoute aussi un exemple du fichier, on pourra mieux voir le problème.
si tu "lit" un fichier texte .. utilise plutôt la méthode ligne à ligne ... telle que je te l'ai utilisé la
ton traitement ligne/ligne sera peu-être ensuite plus simple... tu peu utiliser l'instruction split , pour extraire le texte précédent et succédant à |.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager