Effacer caracteres entre parenthese

Résolu
maxpiton4D Messages postés 16 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 31 mai 2006 - 4 déc. 2004 à 12:51
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 4 déc. 2004 à 17:30
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

Utilisateur anonyme
4 déc. 2004 à 13:53
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
maxpiton4D Messages postés 16 Date d'inscription jeudi 5 février 2004 Statut Membre Dernière intervention 31 mai 2006
4 déc. 2004 à 14:45
ça a l'air de marcher
merçi beaucoup!!!
bon, maintenant, comprendre le code :x
0
Utilisateur anonyme
4 déc. 2004 à 15:52
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
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
4 déc. 2004 à 17:30
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é
0
Rejoignez-nous