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.
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
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.
N'oubliez pas de cliquer surquand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
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
Partager