[VB6 -> VB.NET] supprimer plusieurs caractères dans un meme fichier texte en vb

Résolu
celken - 30 avril 2013 à 14:13
 celken - 3 mai 2013 à 14:12
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 ?

merci d'avance

20 réponses

Utilisateur anonyme
30 avril 2013 à 18:31
Re:
Que comprends-tu dans ça:
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



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 14:32
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.
0
et bien si , il s'agit de Visual Basic 6 , je ne comprends as votre réponse , et vous me voyez désolée si vous avez perdu du temps à lire ce message .
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 avril 2013 à 14:41
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 avril 2013 à 14:43
Salut
et bien si , il s'agit de Visual Basic 6

Dis moi est ce que tu code sous le microsoft
visual basic 6.0 ?
ou autre ?
0
bonjour, et merci
je code avec Microsoft visual basic 2010 Express .
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 avril 2013 à 15:35
charToRemove = Chr(27) + "(s12H"


comment sais tu que c'est chr(27)
qui correspond à Esc !
envois un ex de ton fichier pas tout si c'est
trop long
0
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

file = My.Computer.FileSystem.OpenTextFileWriter("C:\documents\testgruhier5.txt", True)
file.WriteLine(Replace(fileReader, charToRemove, ""))
file.WriteLine(Replace(fileReader, charToRemove2, ""))
file.WriteLine(Replace(fileReader, charToRemove3, ""))
file.WriteLine(Replace(fileReader, charToRemove4, ""))
file.Close()
0
Utilisateur anonyme
30 avril 2013 à 16:16
Bonjour,

Wouaouw, c'est une facture ça?
Mon comptable ne va pas être content...

Et elle sort d'où la "facture" ?
quel logiciel l'a crée?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
c'est une facture récupérée d'un spool d'impression
0
Utilisateur anonyme
30 avril 2013 à 16:40
Et si tu fais:
fileReader=Replace(fileReader, charToRemove, "")

Dans tous les "Replace" de tes boucles?
Ça donne quoi?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Le résultat est le même , il change le premier caractère mais pas les suivants :(
0
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 !
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
30 avril 2013 à 18:24
à tester

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
0
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 !

Dans tous les cas , merci beaucoup à vous tous !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 mai 2013 à 09:33
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.
0
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 !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 mai 2013 à 09:41
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.
0
Utilisateur anonyme
2 mai 2013 à 12:40
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)




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Merci beaucoup pour votre aide et vos explications !
0
Rejoignez-nous