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

- 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 

Votre réponse

20 réponses

Meilleure réponse
- 30 avril 2013 à 18:31
3
Merci
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

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 30 avril 2013 à 14:32
0
Merci
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
Merci
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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 30 avril 2013 à 14:41
0
Merci
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
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 30 avril 2013 à 14:43
0
Merci
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
Merci
bonjour, et merci
je code avec Microsoft visual basic 2010 Express .
Commenter la réponse de celken
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 30 avril 2013 à 15:35
0
Merci
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
Merci
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
- 30 avril 2013 à 16:16
0
Merci
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
Merci
c'est une facture récupérée d'un spool d'impression
Commenter la réponse de celken
- 30 avril 2013 à 16:40
0
Merci
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
Merci
Le résultat est le même , il change le premier caractère mais pas les suivants :(
Commenter la réponse de celken
0
Merci
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
Messages postés
3238
Date d'inscription
jeudi 26 novembre 2009
Dernière intervention
14 mars 2018
- 30 avril 2013 à 18:24
0
Merci
à 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
Merci
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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 2 mai 2013 à 09:33
0
Merci
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
Merci
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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 2 mai 2013 à 09:41
0
Merci
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
- 2 mai 2013 à 12:40
0
Merci
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
Merci
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.