Effacer caracteres entre parenthese

[Résolu]
Signaler
Messages postés
16
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
31 mai 2006
-
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
-
hi all
je voudrais faire un prog qui efface les parenthese et ce qu'il ya a l'interieur dans un fichier
une partie du code:
je suis bloqué, il ne fait qu'une ligne !

Open "C:/bla.txt" For Input As #numfich

Text1.Text = Input(LOF(numfich), numfich)
For i = 1 To 35
truc$ = Mid(Text1.Text, i, 1) If truc$ "(" And passe True Then
MsgBox "Parenthese"
Text$ = Left(Text1.Text, i - 1)
Text2.Text = Text$
passe = False
ElseIf truc$ = Chr(13) Then
MsgBox "saut de ligne"
passe = True
End If
Next i

Close #numfich

merci :)

4 réponses


Salut, alors éssaye :
tu mets un listbox et un command1 dans ta form

Private Sub Command1_Click()
Dim Ligne As String
Dim Lig As String
Dim Qs As Integer

Open "c:\bla.txt" For Append As #1
Print #1, "123(456)789"
Print #1, "012(345)678"
Print #1, "234(567)890"
Print #1, "123(456789"
Print #1, "012(345678"
Print #1, "234(567890"

Close

Open "c:\bla.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Ligne
Qs = InStr(1, Ligne, "(")
If Qs > 0 Then
Lig = Left(Ligne, Qs - 1)
Qs = InStr(1, Ligne, ")")
If Qs > 0 Then
Ligne = Lig & " " & Right(Ligne, (Len(Ligne) - Qs))
Else
Ligne = Lig
End If
End If
List1.AddItem Ligne
Loop
Close

Kill "c:\bla.txt"

Open "c:\bla.txt" For Append As #1
For rt = 1 To List1.ListCount
List1.ListIndex = rt - 1
Print #1, List1.Text
Next rt
Close

End Sub

Au départ ton fichier avait :
123(456)789
012(345)678
234(567)890
123(456789
012(345678
234(567890
Et à la fin il est comme ça:
123 789
012 678
234 890
123
012
234

C'est ça?

A +

A.C.I.V.E SARL
Automatismes Conception Informatique Vidéo Electronique
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
16
Date d'inscription
jeudi 5 février 2004
Statut
Membre
Dernière intervention
31 mai 2006

ça a l'air de marcher
merçi beaucoup!!!
bon, maintenant, comprendre le code :x

Re..
alors le + chiant c'est le instr
par ex:
ligne = "12345(789"
Qs = InStr(1, Ligne, "(")
Qs sera = 6
veux dire que Qs = au sixième chr en commencant par le n°1 (" InStr(1,...")
si "(" n'éxiste pas dans la phrase Qs sera = 0

apres t'as kill fichier.txt
(supprime le fichier)
et puis il le recondtruit avec ce qu'ya sur la list1

voila

A.C.I.V.E SARL
Automatismes Conception Informatique Vidéo Electronique
Messages postés
936
Date d'inscription
lundi 19 janvier 2004
Statut
Membre
Dernière intervention
17 mars 2017
4
ce code tourne et il est plus court
Private Sub Form_Load()
Dim MyNumFile As Integer
Dim Contenuligne As String
Dim chaine As String
Dim a As Integer
Dim b As Integer
MyNumFile = FreeFile

Open "c:\new.txt" For Input As #MyNumFile
    
    Do While Not EOF(MyNumFile)
        Line Input #MyNumFile, Contenuligne
            
'Si on fait:
'if InStr(1, Contenuligne, "("): And InStr(1, Contenuligne, ")")
'Ca ne marche pas allez savoir pourquoi            a InStr(1, Contenuligne, "("): b InStr(1, Contenuligne, ")")
            If a >= 1 And b >= 1 Then

                chaine = Mid(Contenuligne, InStr(1, Contenuligne, "("), _
                    (InStr(1, Contenuligne, ")") - (InStr(1, Contenuligne, "(")) + 1))
                Contenuligne = Replace(Contenuligne, chaine, " ")
            End If

        List1.AddItem Contenuligne
    Loop

End Sub


_______________________________________

Jean-Paul

Le Savoir n'a de valeur que s'il est partagé