IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

detruire une chaine dans un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut detruire une chaine dans un fichier texte
    Bonjour,
    je cherche a detruire une chaine de caractere connue dans un fichier texte.
    Merci de votre aide

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    ben pour le principe... il faut lire le fichier fichier enlever la chaine et ré-écrire le fichier au même endroit...

    Plusieurs possibilités :
    1 - Lecutre ligne/Ligne du fichier .., modification de chaque ligne et écriture de la ligne modifié dans un fichier temporaire... en fin de transfert tu efface le fichier initial et renomme le fichier temporaire avec le nom "initial.."
    2- Lecture de la totalité du fichier texte dans un buffer ( voir par exemple FileSystemObject... TextStream... puis écriture du fichier à l'endroit initial..

  3. #3
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Tout d'abord :

    Tu ouvre le fichier et réccupère la totalité du contenu dans une variable String :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim Adresse As String
    Dim Contenu As String
     
    Adresse = "C:\MonFichier.txt"
     
    Contenu = Space(Filelen(Adresse))
     
    Open Adresse For Binary As #1
    Get #1,,Contenu
    Close #1
    Ensuite :
    A) Si tu connais l'emplacement de la chaine dans le fichier tu découpe la variable (Left, Right, Mid sont des fonction qui peuvent t'aider)

    B) Si tu ne connais pas l'emplacement du texte il existe deux cas :
    1) Soit le texte à supprimer n'existe qu'une seule fois dans le fichier et tu en est sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim RemplaceStr As String
    Dim Adresse ...
    ...
    ...
    Contenu = Replace(Contenu, RemplaceStr, "")
    2) Soit tu sais qu'il sagit de la Xème fois qu'il apparait dans le fichier qu'il faut supprimer:
    Utilise InStr afin de localiser la chaine puis revient au A).



    Enfin il ne te reste plus qu'a recréer le fichier :
    Détruit le fichier éxistant :
    Réécrit le nouveau fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Open Adresse For Binary As #1
    Put #1,,Contenu
    Close #1

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut detruire une chaine dans un fichier texte
    ca marche bien mais il y a un petit pb
    quand on detruit la chaine on ne detruit pas la ligne et cela me pose un probleme apres quand je relis le fichier et que je le charge dans un combobox il me repond "depassement de capacite"

  5. #5
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Si la chaine que tu dois detruire est une ligne complète, alors dans la chaine RemplaceStr n'oubli pas de rajouter le retour à la ligne (constante VbCrLf).
    Il faut que RemplaceStr contienne la TOTALITE de ce que tu veux supprimer.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut detruire une ligne d'un fichier texte sans laisser une ligne vide
    Bonsoir,
    je voudrais supprimer une ligne dans un fichier texte mais sans laisser de ligne vide.

    exemple:
    je connais une chaine de caractere
    j'ouvre un fichier texte et je cherche la chaine de caractere
    une fois la chaine trouvee je lui demande de selectionner la ligne
    je detruit la ligne


    quand j'ouvre le fichier texte il ya:

    c:\cao|roger
    c:\cao|roger

    c:\cao|roger
    c:\cao|roger

    la ligne vide corespond a la ligne detruire

    comment faire svp?

    Merci de votre aide

  7. #7
    Membre régulier
    Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 85
    Points : 105
    Points
    105
    Par défaut
    Comme il n'y a pas eu de réponse depuis une heure, j'émets juste un avis car je n'ai pas une réponse formelle.
    Je pense qu'il faut créer un nouveau fichier, en ne tenant pas compte de la ligne à supprimer, puis naturellement effacer le fichier origine et renommer le nouveau fichier avec le nom de l'ancien.

  8. #8
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    http://www.developpez.net/forums/sho...d.php?t=226730

    Le principe reste toujours le même.

    A ce sujet, une réponse dans la discussion précédente plutôt que l'ouverture d'une nouvelle aurait montré, de ta part, un peu de respect pour ceux qui essayent de t'aider.

  9. #9
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Merci de commencer par faire une recherche dans la FAQ ou dans le forum avant de poster. Cela te ferait gagner du temps et à nous aussi. Sur le lien que t'a donné AlainTech il y a un descriptif complet de ce qu'il faut faire.

    Ps : Si tu as une question, poste la dans le dans l'autre sujet, cela evitera d'avoir des discussions dans tous les sens.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    je ne voudrais pas gener qui que ce soit mais je suis novice en la matiere et je ne trouve pas de solution a mon pb

    quand je detruit une ligne dans un fichier texte elle est remplacee par une ligne vide
    j'ai bien mis le (vbclrf) dan la chaine remplace mais rien n'y fait

    Merci de votre aide

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tiens un exmple de traitement d'un fichier texte ligne à ligne..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Option Explicit
    Sub SupprimerLignevide()
     Dim f As Integer 'Numero fichier en lecture
     Dim g As Integer 'Numero fichier destination
     Dim stLigne As String 'ligne lue
     Dim stFicSource As String
     Dim stFicDest As String
     stFicSource = "c:\tmp\toto.txt"
     stFicDest = "c:\tmp\totoSansLignevide.txt"
     
     f = FreeFile 'Demande un numéro de fichier libre
     Open stFicSource For Input As #f
     g = FreeFile
     Open stFicDest For Output As #g 'Attention le fichier Sera écrasé..
     While Not EOF(f)
        Line Input #f, stLigne
        If Len(stLigne) > 0 Then Print #g, stLigne
     Wend
     Close #f
     Close #g
    End Sub

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 25
    Points : 21
    Points
    21
    Par défaut detruire une chaine dans un fichier texte
    je suis novice en la matiere et mon probleme est toujours la

    quand je detruit la chaine elle est remplacee par une ligne vide

    j'ai bien rajoute le vbclrf a la chaine a remplacer mais c'est toujours remplace par une ligne vide

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Dim Contenu As String
    Open EspaceProeIni For Binary As #1
    Contenu = Space(FileLen(EspaceProeIni))
     
    Get #1, , Contenu
    Close #1
     
    Dim RemplaceStr As String
    RemplaceStr = Text4.Text + vbclrf
    Contenu = Replace(Contenu, RemplaceStr, "")
    Text4.Text = Contenu
    Kill EspaceProeIni
     
    Open EspaceProeIni For Binary As #1
    Put #1, , Contenu
    Close #1
     
     
     
    Dim strTemp As String
    Dim strRecup As String
    Dim chartemp As String
    Dim Tbl As Variant
    Dim iPnt As Integer
    Dim iPntCombo As Integer
    Combo1.Clear
    Combo2_detruire_client.Clear
    Open EspaceProeIni For Input As #1
     
    iPntCombo = 0
    While Not EOF(1)
        Input #1, strTemp
        iPnt = 0
        chartemp = ""
        While chartemp <> "|"
            iPnt = iPnt + 1
            chartemp = Mid$(strTemp, iPnt, 1)
        Wend
        strRecup = Right$(strTemp, Len(strTemp) - iPnt)
        Combo1.AddItem strRecup
        Combo2_detruire_client.AddItem strRecup
    Wend
    Close #1
    Frame_detruire_espace_client.Visible = False
    End Sub

    Merci de votre aide

  13. #13
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Ajoute les balises codes à ton post, il en sera plus lisible merci.
    Ajoute aussi un exemple du fichier, on pourra mieux voir le problème.

  14. #14
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    si tu "lit" un fichier texte .. utilise plutôt la méthode ligne à ligne ... telle que je te l'ai utilisé la
    ton traitement ligne/ligne sera peu-être ensuite plus simple... tu peu utiliser l'instruction split , pour extraire le texte précédent et succédant à |.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 21
    Dernier message: 01/04/2014, 21h06
  2. Modifier une chaine dans un fichier texte
    Par ruyeken dans le forum Android
    Réponses: 4
    Dernier message: 29/05/2013, 11h57
  3. Chercher et remplacer une chaine dans un fichier texte C
    Par étoile de mer dans le forum Débuter
    Réponses: 6
    Dernier message: 14/11/2011, 11h59
  4. effacer une chaine de caractère dans une ligne dans un fichier texte
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 25/08/2010, 10h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo