Supprimer tout les caractères après un mot dans fichier texte [Résolu]

Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 13:06 - Dernière réponse : Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention
- 16 déc. 2009 à 14:26
Bonjour,

Voilà, dans un fichier texte j'aimerais supprimer tout ce qui se trouve après la chaine de caractère :

!
!
end


Comment faire ?

Merci
Afficher la suite 

15 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 déc. 2009 à 14:19
+3
Utile
gaffe a garder le motif recherché dans la chaine de base, ucfoutu

Dim sBuffer As String
Dim nPos As Long
    Open "c:\a.txt" For Input As #1
        sBuffer = Input(LOF(1), 1)
    Close #1
    nPos = InStr(sBuffer, "!" & vbCrLf & "!" & vbCrLf & "end")
    If nPos Then
        Open "C:\b.txt" For Output As #1
            Print #1, Left$(sBuffer, nPos + 8);
        Close #1
    End If


enfin là, j'écris dans un fichier en sortie, pas forcément utile dans ton cas...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 déc. 2009 à 13:11
0
Utile
Bonjour,
tu ouvres le fichier texte en question et le lis d'un bloc dansx une variable, sauf si (cas rare) il dépasse 2 GO
Soit t la variable ===>>>
if instr(t, "!") > 0 then 
  t = left(t, instr(t, "!") -1)
end if

tu fermes le fichier, le réouvre et ... y écris le contenu de la variable t

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Commenter la réponse de ucfoutu
Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 13:21
0
Utile
Alors, merci, j'ai pas tout compris ou peut être pas tout dit.
Il y a plusieurs "!" qui sont dans mon texte auxquels je ne veux pas toucher.
Juste enlever tout ce qu'il y a après cette chaine uniquement:

!
!
end
Commenter la réponse de Lokomass
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 déc. 2009 à 13:25
0
Utile
ET ?
après quelle occurrence de ce caractère ?
La première ? ===>>> je t'ai alors déjà répondu...
Une autre ? Et laquelle, alors ?
Ta question reste en tout état de cause fort imprécise, notamment après ton dernier message ....
Explique avec détails et précisions !


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Commenter la réponse de ucfoutu
Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 13:38
0
Utile
Je souhaite parcourir mon fichier texte.
Des que je trouve cette chaine de caractère :

!
!
end


Je supprime tout ce qui se trouve derrière.
Exemple, j'ai ce fichier :

interface vlan 8
ip address 192.168.1.1 255.0.0.0
!
!
end
zefkzrjgfjgrjigreed"é("'-è''vc-bv-è-(*rfgeerg
gergtrrth
trhtr


Après ma fonction, je veux avoir ceci :
interface vlan 8
ip address 192.168.1.1 255.0.0.0
!
!
end
Commenter la réponse de Lokomass
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 16 déc. 2009 à 13:41
0
Utile
salut
tu peut nous donner un exemple de ta chaine et ce que tu veut laisser ?
Commenter la réponse de Claiyah
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 16 déc. 2009 à 13:44
0
Utile
ah on a poster au meme moment lol
tu cherche le "end" : istr(1,tachaine,"end") et tu prend ce qui se trouve avant mid(tachaine,1,istr(1,tachaine,"end")+3=) ou avec left(tachaine, instr(tachaine, "end") +3)
end gros:

tachaine = left(tachaine, instr(tachaine, "end") +3)
Commenter la réponse de Claiyah
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 déc. 2009 à 13:48
0
Utile
interface vlan 8
ip address 192.168.1.1 255.0.0.0
!
!
end


n'a nullement supprimé ce qui se trouvait après le !, mais uniquement ce qui se trouvait entre le dernier ! et le mod end ...
Alors ? ===>>> réexplique car manque de précisions !
Et quid si, plus loin, tu as encore un ou des ! ?
Tu supprimes quoi ?
Tu n'auras une réponse précise que lorsque ta question le sera (précise et sans failles). C'est sûr !
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Commenter la réponse de ucfoutu
Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 13:56
0
Utile
Mais c'est pourtant clair je pense.

Quoi qu'il y ai après cette chaine de caractères :

!
!
end


Je veux tout enlever, je me moque de ce qu'il y a après.
Après end, je ne veux plus rien.
La chaine de caractère à chercher sera alors :

"!" & vbCrLf & "!" & vbCrLf & "end"


Des qu'on trouve ceci dans le fichier texte, on enlève tout ce qui se trouve après.
Commenter la réponse de Lokomass
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 16 déc. 2009 à 14:00
0
Utile
alors tu as déjà la réponse (ma toute première à adapter ainsi) :
if instr(t, "!" & vbcrlf & "!" & vbcrlf & "end") > 0 then 
  t = left(t, instr(t, "!" & vbcrlf & "!" & vbcrlf & "end") -1)
end if

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
Commenter la réponse de ucfoutu
Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 14:12
0
Utile
Ah !! On y est presque, j'ai fait cette fonction, seulement il m'enlève aussi la chaîne :

!
!
end


Moi je veux la garder :(

Voila ma fonction :

Public Function Degage(sFile As String)
Dim FF As Integer
FF = FreeFile
Dim sBuffer As String
Open sFile For Input As #FF
    sBuffer = Input(LOF(FF), 1)
Close #FF
If InStr(sBuffer, "!" & vbCrLf & "!" & vbCrLf & "end") > 0 Then
  sBuffer = Left(sBuffer, InStr(sBuffer, "!" & vbCrLf & "!" & vbCrLf & "end") - 1)
End If
Close #FF
FF = FreeFile
Open sFile For Output As #FF
Print #FF, sBuffer
Close #FF
End Function
Commenter la réponse de Lokomass
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 déc. 2009 à 14:20
0
Utile
pense aussi à mettre un ';' en fin de ton instruction Print, sous peine d'ajouter un saut de ligne...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Lokomass 191 Messages postés jeudi 7 janvier 2010Date d'inscription 15 mai 2013 Dernière intervention - 16 déc. 2009 à 14:23
0
Utile
CA fonctionne, merci à tous
Commenter la réponse de Lokomass
Claiyah 580 Messages postés mercredi 20 août 2008Date d'inscription 20 avril 2010 Dernière intervention - 16 déc. 2009 à 14:24
0
Utile
Dim sBuffer As String
Dim nPos As Long
    Open "c:\a.txt" For Input As #1
        sBuffer = Input(LOF(1), 1)
    Close #1
    nPos = InStr(sBuffer, "!" & vbCrLf & "!" & vbCrLf & "end") 'Trouver la position de la chaine 
    lenn = len("!" & vbCrLf & "!" & vbCrLf & "end") 'récupérer la longueur de la chaine
    If nPos Then
        Open "C:\b.txt" For Output As #1
            Print #1, Left$(sBuffer, lenn); 'récupérer le texte avant la position trouver + la chaine 
        Close #1
    End If
Commenter la réponse de Claiyah
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 16 déc. 2009 à 14:26
0
Utile
tu ne te sers pas de nPos, Claiyah ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield

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.