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

VBScript Discussion :

Remplacer une ligne dans un fichier texte !


Sujet :

VBScript

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Mai 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Refresh !
    Bonjour à tous!

    Je suis newbe en VBS et j'essaie de "supprimer" des lignes qui contiennet "Tata JOURNAL tot" dans un fichier txt.
    Mon fichier txt à traiter contient environ 600 000 lignes.

    Ne serait il pas mieux de trier les lignes: Ligne après Ligne ?
    Est-ce ce que vous avez fait dans ce topix avec replace pour être fait ligne par ligne?

    Au lieu de replace la ligne de qui contient "JOURNAL" par "titi", pouvons-nous la supprimer dans la reécriture du txt ?

    Merci pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #22
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut

    Au lieu de replace la ligne de qui contient "JOURNAL" par "titi", pouvons-nous la supprimer dans la réécriture du txt ?
    Oui.
    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
    Option Explicit
    Const Fichier = "C:\Vide\TestTriTxT.txt"
    Const LigneCherche = "JOURNAL"
     
    Dim fso
    Dim oRegEx
    Dim monFichier
    Dim sStream
    Dim sNewStream
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set monFichier = fso.OpenTextFile(Fichier,1)
    sStream = monFichier.ReadAll
    monFichier.Close
     
    Set oRegEx = New RegExp
    oRegEx.IgnoreCase = True
    oRegEx.Global = True
     
    'supprime toutes les ligne contenant LigneCherche
    oRegEx.Pattern = "(\n|^).*" & LigneCherche & "*[^\r]*"
    sNewStream = oRegEx.Replace(sStream,"")
     
    'supprime les lignes de trait ----------
    oRegEx.Pattern = "(\n|^)*-[^\r]*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    'supprime les lignes vides
    oRegEx.Pattern = "\n[\r]"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    'supprime les signes inconnus
    oRegEx.Pattern = "\n [\r]"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    Set monFichier = fso.OpenTextFile(Fichier,2)
    monFichier.Write sNewStream
    monFichier.Close
    Ton fichier est encoder UFT8? car tu as des caractères ascii 12

    D'autres forumeurs passant par là pourront surement affiner le/les Patterns.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #23
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Mai 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Tri TxT / Suppresion / Remplacement Lignes TxT / VBS
    Salut ProgElecT!

    Je te remercie pour ta réactivité!

    Quoi? UFT8 ? Je suis désolé je ne saurai te répondre! Je ne fais pas de Prog moi... (enfin là c'est juste du traitement de texte en vbs et un peu de vba c'est tout ^^)
    C'est un fichier txt issu d'une console de conduite d'unité dans l'industrie, c'est une liste d'alarmes procédés. (c'est tout ce que je peux te dire )

    Entre temps j'avais réussi à faire quelque chose mais c'était pas "propre" et j'avais pleins de lignes vides!

    Du coup j'ai repris ta modif, j'ai ajouté ce que j'avais à ajouter pour finaliser mon tri et....... -> HOP! Magie Magie Magie et vos c'est du génie!

    Super, je te remercie!

    ps: je l'ai testé sur le fichier de 620 000 lignes et ça prends approximativement 1 à 2 min (ce qui largement assez rapide pour moi!) =) =) =)

    Bref, ça faisait 2 jours que je galéré avec ce tri et grâce à ce topic "j'ai" (grâce à vous) réussi à trier mon fichier, j'ai plus qu'à l'envoyer balader sur excel avec bon coup de vba et tout sera parfait =)

    MERCI MERCI MERCI !

    Joris.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    Option Explicit
    Const Fichier = "C:\TestTriTxT.txt"
     
     
    Dim fso
    Dim oRegEx
    Dim monFichier
    Dim sStream
    Dim sNewStream
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set monFichier = fso.OpenTextFile(Fichier,1)
    sStream = monFichier.ReadAll
    monFichier.Close
     
    Set oRegEx = New RegExp
    oRegEx.IgnoreCase = True
    oRegEx.Global = True
     
    'supprime toutes les ligne contenant LigneCherche
    oRegEx.Pattern = "(\n|^).*JOURNAL*[^\r]*"
    sNewStream = oRegEx.Replace(sStream,"")
     
    msgbox "Journal Fin."
     
    'supprime toutes les ligne contenant LigneCherche
    oRegEx.Pattern = "(\n|^).*JNLPRINT*[^\r]*"
    sNewStream = oRegEx.Replace(sStream,"")
     
    msgbox "JNLPRINT Fin."
     
    'supprime les ACK
    oRegEx.Pattern = "(\n|^).*ACK*[^\r]*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "ACK Fin."
     
    'supprime les ACK
    oRegEx.Pattern = "(\n|^).*RTN*[^\r]*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "RTN Fin."
     
    'supprime les ACK
    oRegEx.Pattern = ".*24$"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "24 Fin."
     
    'supprime les ACK
    oRegEx.Pattern = ".*UNIT.*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "Unit Fin."
     
    'supprime les ACK
    oRegEx.Pattern = ".*PAGE.*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "PAGE Fin."
     
    'supprime les signes inconnus
    oRegEx.Pattern = "\n [\r]"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox " Fin."
     
    'supprime les lignes de trait ----------
    oRegEx.Pattern = "(\n|^)*-[^\r]*"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "------ Fin."
     
    'supprime les lignes vides
    oRegEx.Pattern = "\n[\r]"
    sNewStream = oRegEx.Replace(sNewStream,"")
     
    msgbox "Lignes Vides Fin."
     
    Set monFichier = fso.OpenTextFile(Fichier,2)
    monFichier.Write sNewStream
    monFichier.Close
     
    msgbox "fin."

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Mai 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Pour Améliorer!
    Re Bonjour!

    Bon finalement mon fichier txt est trop gros! Ce fichier est issu d'une concaténation d'environ 800 fichiers txt.
    Une bonne solution serait de faire cette macro de tri sur chaque fichier txt dans le Folder "xxx". Du coup j'aimerais faire une boucle for each avec le tri dedans mais je n'arrive pas à le faire tourner.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Option Explicit
     
    Const LigneCherche = "JOURNAL"
     
    Dim File 
    Dim Folder
    Dim fso
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set Folder = fso.GetFolder("C:FichiersTxT\Juin")
     
    For Each File in Folder
     
            If Left(File.name, 3) = "ALC" then
     
                  Fichier = File.Name
     
     
     
                  Dim oRegEx
                  Dim monFichier
                  Dim sStream
                  Dim sNewStream
     
                  Set fso = CreateObject("Scripting.FileSystemObject")
                  Set monFichier = fso.OpenTextFile(Fichier,1)
                  sStream = monFichier.ReadAll
                  monFichier.Close
     
                  Set oRegEx = New RegExp
                  oRegEx.IgnoreCase = True
                  oRegEx.Global = True
     
                  'supprime toutes les ligne contenant LigneCherche
                  oRegEx.Pattern = "(\n|^).*" & LigneCherche & "*[^\r]*"
                  sNewStream = oRegEx.Replace(sStream,"")
     
                  'supprime les lignes de trait ----------
                  oRegEx.Pattern = "(\n|^)*-[^\r]*"
                  sNewStream = oRegEx.Replace(sNewStream,"")
     
                  'supprime les lignes vides
                  oRegEx.Pattern = "\n[\r]"
                  sNewStream = oRegEx.Replace(sNewStream,"")
     
                  'supprime les signes inconnus
                  oRegEx.Pattern = "\n [\r]"
                  sNewStream = oRegEx.Replace(sNewStream,"")
     
                  Set monFichier = fso.OpenTextFile(Fichier,2)
                  monFichier.Write sNewStream
                  monFichier.Close
           End If
    Next
     
    Set fso = Nothing
    Un petit coup de main ne serait pas de refus =)

    Joris.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Supprimer une ligne dans un fichier texte
    Par bsketeur dans le forum Langage
    Réponses: 26
    Dernier message: 28/06/2006, 10h36
  2. supprimer une ligne dans un fichier texte
    Par linouline dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 23h02
  3. Supprimer une ligne dans un fichier texte
    Par @yoyo dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 28/03/2006, 14h19
  4. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 01h33
  5. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 16h43

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