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

celken - 30 avril 2013 à 14:13 - Dernière réponse :  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
Afficher la suite 

20 réponses

Répondre au sujet
Utilisateur anonyme - 30 avril 2013 à 18:31
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 avril 2013 à 14:32
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
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 .
Commenter la réponse de celken
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 30 avril 2013 à 14:41
0
Utile
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.
Commenter la réponse de ucfoutu
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 30 avril 2013 à 14:43
0
Utile
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 ?
Commenter la réponse de cs_ShayW
0
Utile
bonjour, et merci
je code avec Microsoft visual basic 2010 Express .
Commenter la réponse de celken
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 30 avril 2013 à 15:35
0
Utile
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
Commenter la réponse de cs_ShayW
0
Utile
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()
Commenter la réponse de celken
Utilisateur anonyme - 30 avril 2013 à 16:16
0
Utile
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
Commenter la réponse de Utilisateur anonyme
0
Utile
c'est une facture récupérée d'un spool d'impression
Commenter la réponse de celken
Utilisateur anonyme - 30 avril 2013 à 16:40
0
Utile
Et si tu fais:
fileReader=Replace(fileReader, charToRemove, "")

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

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
0
Utile
Le résultat est le même , il change le premier caractère mais pas les suivants :(
Commenter la réponse de celken
0
Utile
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 !
Commenter la réponse de celken
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 30 avril 2013 à 18:24
0
Utile
à 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
Commenter la réponse de cs_ShayW
0
Utile
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 !
Commenter la réponse de celken
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 2 mai 2013 à 09:33
0
Utile
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.
Commenter la réponse de ucfoutu
0
Utile
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 !
Commenter la réponse de celken
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 2 mai 2013 à 09:41
0
Utile
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.
Commenter la réponse de ucfoutu
Utilisateur anonyme - 2 mai 2013 à 12:40
0
Utile
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
Commenter la réponse de Utilisateur anonyme
0
Utile
Merci beaucoup pour votre aide et vos explications !
Commenter la réponse de celken

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.