Bonjour,
Je dois supprimer plusieurs caractères différents dans un fichier texte en Vb , j'arrive à en supprimer un , mais je n'arrive pas à le faire pour les autres caractères .
voici mon code
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fileReader As String
Dim charToRemove As String
Dim charToRemove2 As String
Dim charToRemove3 As String
Dim charToRemove4 As String
charToRemove = Chr(27) + "(s12H"
charToRemove2 = Chr(27) + "(s3B"
charToRemove3 = Chr(27) + "(s0B"
charToRemove4 = Chr(27) + "(s10H"
'Suppression du premier caractère
fileReader = My.Computer.FileSystem.ReadAllText("C:\documents\gruhier.txt")
Dim cible As String
cible = "charToRemove,charToRemove2,charToRemove3,charToRemove4"
Replace(fileReader, cible, "")
My.Computer.FileSystem.WriteAllText("C:\documents\testgruhier2.txt", (Replace(fileReader, cible, "")), False)
Quelqu'un a- t-il une idée de ce qui est possible avec VB6 ?
Option Explicit On
Option Strict On
Public Class Form1
Private TousTextesRecherches() As String = {Chr(27) & "(s12H", Chr(27) & "(s3B", Chr(27) & "(s0B", Chr(27) & "(s10H"} 'Liste des "trucs" à supprimer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim FichierLu As String = My.Computer.FileSystem.ReadAllText("C:\documents\gruhier.txt")
For Each st As String In TousTextesRecherches
Do While FichierLu.Contains(st) = True
FichierLu = FichierLu.Remove((InStr(FichierLu, st, vbTextCompare)) - 1, st.Length)
Loop
Next
My.Computer.FileSystem.WriteAllText("C:\documents\testgruhier_NEW.txt", FichierLu, False)
End Sub
End Class
Bonjour,
J'ai ouvert pour rien la présente discussion, qui ne concerne très manifestement pas du :
Forum > Visual Basic 6
Encore une fois du temps perdu ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
et bien si , il s'agit de Visual Basic 6 , je ne comprends as votre réponse
CQFD !
En
Visual Basic 6
, hein ... Et quoi d'autre, encore ?
Bref ... ===>>> ma sieste est plus intéressante.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Voici un exemple du fichier sauf que le caractère escape n'apparait pas en copier/coller
mais il s'agit bien du caractère escape (flèche vers la droite) suivi de "(s3B" ou "(s0B" ou "(s10H".
Je peux effectivement faire la manipulation du replace pour un caractère mais pas pour les autres .
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ F A C T U R E ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄClientÄÄÄÂÄFactureÄÂÄÄÄÄÄÄDuÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄReglementÄÄÄÄÄÄÄÄÂRepresÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³ G60VAR0 ³ 45475 ³ 12/12/2012 ³ TR. au 15/02/2013 ³ 15 ³ PAGE 1 ³
ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ¿
³ Reference ³ Designation Article ³ Qte ³ PU HT Brut³ Remise³ MT HT ³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄ´
³(s3BCmd 995563/0 du 27/11/2012 Ref CDE 444311991-26.11-DAVID PORT AVANCE (s0B³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄ´
³ ³CDE 444311991- DAVID MARC ³ ³ ³ ³ ³
³ ³ ³ ³ ³ ³ ³
³GBERE80EB910³BERENICE CC140X200 BULTEX 15CM ³ 1³ 330.00³ ³ 330.00³
³ ³B 910 MISTERGOODDEAL ³ ³ ³ ³ ³
³ ³REF 2356G23O0001G23O ³ ³ ³ ³ ³
³ ³ ³ ³ ³ ³ ³
³Port ³Montant pour la commande 599556/9 ³ ³ ³ ³ 18.00³
³ Total HT ³Commande 995563/2 ³ 1³ ³ ³ 348.00³
ÃÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄ´
³(s3BCmd 995564/0 du 27/11/2012 Ref CDE 44307471-25.11-ION PORT AVANCE (s0B³ (s0B³
j'ai remodifié moon code pour essayer d'autres solutions,
mais ça me marche toujours pas ,
un seul caractère supprimé
code :
Dim fileReader As String
Dim file As System.IO.StreamWriter
Dim charToRemove As String
Dim charToRemove2 As String
Dim charToRemove3 As String
Dim charToRemove4 As String
charToRemove = Chr(27) + "(s12H"
charToRemove2 = Chr(27) + "(s3B"
charToRemove3 = Chr(27) + "(s0B"
charToRemove4 = Chr(27) + "(s10H"
'Suppression du premier caractère
fileReader = My.Computer.FileSystem.ReadAllText("C:\documents\gruhier.txt")
'Dim cible As String
'cible = "CENTRE, AVENUE"
Do While Text = charToRemove
Replace(fileReader, charToRemove, "")
Loop
Do While Text = charToRemove2
Replace(fileReader, charToRemove2, "")
Loop
Do While Text = charToRemove3
Replace(fileReader, charToRemove3, "")
Loop
Do While Text = charToRemove4
Replace(fileReader, charToRemove4, "")
Loop
en fait c'est plus mesquin que ça , il enregistre le fichier , une première fois avec le 1 er caractère modifié, et il rajoute le même fichier mais avec le 2eme caractère supprimé, auquel il rajoute le fichier avec le 3 eme caractère supprimé ...ect , il fait bien les changements mais pas comme il faut !! aie !
Private Sub test()
Dim charToRemove(3) As String
charToRemove(0) = Chr(27) + "(s12H"
charToRemove(1) = Chr(27) + "(s3B"
charToRemove(2) = Chr(27) + "(s0B"
charToRemove(3) = Chr(27) + "(s10H"
Dim list1 = As New List(Of String)
Try
list1 = File.ReadAllLines("C:\documents\gruhier.txt").ToList
For Each sentence In list1
for i = 0 to 3
sentence = sentence.replace(charToRemove(i),string.empty)
next
Next
File.WriteAllLines("C:\documents\gruhierOut.txt", list1.ToArray)
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Merci Acive ,
Ta solution est la bonne,
Par contre à quoi correspond le -1 dans la ligne ?
FichierLu= FichierLu.Remove ((Instr(FichierLu, st, VbTextCompare))-1, st.Length)
J'ai testé aussi la solution de ShayW , mais il me pète une erreur sur le File !
Bonjour, celken
Tu ne poserais sans aucun doute pas cette question si tu avait compris ce qu'est la position retournée par Instr !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Je ne comprends peut être pas la ce qu'est la position retournée par Instr , mais je sais que "si tu avait compris" s'écrit ainsi 'si tu avaiS compris" et pour info , je ne connais le VB que depuis quelques jours , car c'est un langage qui m'a été imposé, pendant ma période de stage en entreprise !
Comme la lecture de cette discussion a l'air de vous ennuyer au plus haut point , ne faites pas d'effort et retournez à votre sieste ! qui avait l'air si indispensable mardi !
Hé bien ! Réflexe numéro 1 : on ouvre MSDN sur le mot Instr. Et on lit.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Bonjour,
Oui.. j'ai voulu le simplifier au maximum.
N'hésite pas à faire des tests comme ça pour comprendre le fonctionnement:
Dim Str As String = "ABCDEF"
MsgBox("Nous avons cette chaine : " & Str)
Dim Rt As Integer = (InStr(Str, "B"))
MsgBox("La position de 'B' est: " & Rt)
Str = Str.Remove(Rt, 1)
MsgBox("Maintenant on va supprimer le caractère à la même position que InStr, ce qui fait: " & Str & vbCrLf & "Quelle lettre a-t-il supprimé? à quel position?")
Str = "ABCDEF"
Str = Str.Remove(Rt - 1, 1)
MsgBox("Si je veux enlever le 'B' je dois faire un '-1', ce qui fait: " & Str)