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 :

Delete Last Ligne In Txt File.


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Par défaut Delete Last Ligne In Txt File.
    Bonjour les amis,

    Comment faire pour supprimer la dernier ligne dans un fichier .txt.(supprimer la ligne définitivement pas seulement le contenu de la ligne)

    Car je fait l'enregistrement des donner dans un fichier .txt et automatiquement il ajoute une ligne vide a la fin du fichier.

    (sinon si il y'a une possibilité de comparer 2 fichier .txt et ignorer les ligne vide qui ce trouve a la fin du fichier)

    Merci.

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Est-ce-que vous pouvez nous poster votre code et

  3. #3
    Membre éclairé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Par défaut
    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
    Sub IgnoreTxtTag(LineNumber,TagNumber,OutFilePath,RefFilePathName)
    '	============================Read Line In New file txt
    	LineNumbers=CLng(LineNumber)
    	wait 1
     
    	FilePath=OutFilePath&Environment("FileNameTXT")
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTxtFile = objFSO.OpenTextFile(FilePath)
     
        i=0
    	Do
    		sContent = objTxtFile.ReadLine
    		i = i+1
    	Loop While i<LineNumbers
    '	============================Get Value
    	MonTableau = Split(sContent,"|")
    	ValueTag= MonTableau(CLng(TagNumber)-1)
    '	============================Replace value In Reference File .txt 1.read line refrence 2.replace value  
    	FilePath=RefFilePathName
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTxtFile = objFSO.OpenTextFile(FilePath)
        i=0
    	Do
    		sContent_Ref = objTxtFile.ReadLine
    		i = i+1
    	Loop While i<LineNumbers
    '	============================traitement sur la ligne substring
    	MonTableau = Split(sContent_Ref,"|")
    	strNewLine= Replace(sContent_Ref ,MonTableau((CLng(TagNumber))-1),ValueTag)
    	'	============================Update Ligne In reference File
    	set objWS = CreateObject("Wscript.Shell") 
    	Set fsob=CreateObject("Scripting.FileSystemObject")
     
    	strFileName = RefFilePathName
    	Set objFS = CreateObject("Scripting.FileSystemObject") 
    	Set objTS = objFS.OpenTextFile(strFileName, 1) 
    	strContents = objTS.ReadAll 
     
    	'CountLine= objTS.Line
    	'CountLastLine=2
     
    	objTS.Close 
     
    	arrLines = Split(strContents, vbNewLine)
    	Set objTS = objFS.OpenTextFile(strFileName, 2) 
     
    	For Each strLine In arrLines
     
    	If strline = arrLines((CLng(LineNumber))-1) then
     
    	objTS.WriteLine strNewLine
    	else
    	objTS.WriteLine strLine
    	'If  CountLastLine<CountLine  Then
    	'objTS.WriteLine strLine
    	'End If
     
    End If
    	'CountLastLine=CountLastLine+1
    	Next
    	'remove last ligne ??
    	wait 1
    	End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Par défaut
    le problème ces que lors de l'enregistrement il ajoute une ligne vide a la fin du fichier .txt

    la solution ces de comparer 2 fichier .txt sans compter les ligne vide(ligne vide ignoer)

    exemple :

    Fichier 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TEXT1
    TEXT2
    TEXT3
    TEXT4
    Fichier 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TEXT1
    TEXT2
    TEXT3
    TEXT4
    (ligne vide)
    (ligne vide)
    une suggestion ?

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Si vous permettez, je voudrais répondre avec une solution à la façon que j'ai posté dans une autre postage du même op:
    http://www.developpez.net/forums/d13...e/#post7508895
    en utilisant les même conventions. Il suffit de change le pattern de regexp et la ligne fonctionel de rx.replace() comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set rx=new regexp
    with rx
        .pattern="^([\s\S]*)(\r\n.*)$"
        '.multiline=false    'pas absolument nécessaire
    end with
     
    if rx.test(s) then
        t=rx.replace(s, "$1")
    else
        t=s	'ne faites rien comme le fichier pourrait être vide
    end if
    Et c'est fait.

    Ce qui est intéressant c'est que vous pouvez poser les deux questions ainsi que les deux fonctionalités recherchées en même temps et avoir la solution tombée dans le même esprit.

    Dites, on veut remplacer certaine ligne et en même temps faire disparaître la dernière lign d'un fichier. Une condition naturelle devrait imposer: c'est que la ligne qui va être remplacer ne devrait être pas la dernière ligne, sinon, on ne sait quoi faire sans précision supplémentaire.

    Voilà comment c'est fait avec les notions utilisées dans l'autre question le hyperlien a indiquée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    line_number=3
    replacement_line="xyz"
     
    set rx=new regexp
    with rx
        .pattern="^((.*\r\n){" & (line_number-1) & "})((.*)(\r\n))(([\s\S]*)(\r\n))?(.*)$"
        '.multiline=false    'pas absolument nécessaire
    end with
     
    if rx.test(s) then
        t=rx.replace(s, "$1" & replacement_line & "$5$7")    'avec $5$7$8$9 la dernière ligne est restorée
    else
        t=s    'ne rien faire comme la fonctionalité est ambigue
    end if
    Et c'est fait.

  6. #6
    Membre éclairé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Par défaut
    Merci, mais le mieux ces de trouver un traitement pour supprimer la dernier ligne (je peux boucler jusqu’à la dernier ligne mais il me faut une fonction du genre RemoveLigne

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut
    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
    Const ForReading = 1, ForWriting = 2
    Dim oFso, f
    Dim ContenuLgn
    Set oFso = CreateObject("Scripting.FileSystemObject")
     
    'Ouverture et lecture du fichier
    	Set f = oFso.OpenTextFile("C:\PersoFrancis\test.txt", ForReading)
            'recuperation d'un tableau de x lignes
            ContenuLgn = Split(f.ReadAll, vbNewLine)
            f.Close
     
            'réouverture du fichier en ecriture
            Set f = oFso.OpenTextFile("C:\PersoFrancis\test.txt", ForWriting)
            'supprime le dernier indice du tableau
    	ReDim Preserve ContenuLgn(UBound(ContenuLgn) - 1)
            'réécriture du fichier
            f.Write Join(ContenuLgn, vbNewLine)
            f.Close
    Cela devrait te permettre de créer ta fonction RemoveLigne
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre éclairé
    Homme Profil pro
    Analyse système
    Inscrit en
    Mars 2011
    Messages
    444
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Mars 2011
    Messages : 444
    Par défaut
    Merci ProgElecT Mais au niveau de la ligne 13 je recoi un erreur : une idée ?

  9. #9
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Permission refuser
    Peut-être vous devriez s'assurer que le fichier n'est pas ouvert pas quelque logiciel qui le verrouille. (Je suppose que le fichier ne soit pas conditionné 'read-only', bien entendu.)

Discussions similaires

  1. [POI] Deleter une ligne (pas mettre à blanc)
    Par Jabbal'H dans le forum Documents
    Réponses: 5
    Dernier message: 26/05/2008, 17h13
  2. [BATCH]Récup 2nd ligne fichier txt
    Par guigui11 dans le forum Windows
    Réponses: 2
    Dernier message: 28/09/2006, 17h34
  3. Effacer dernière ligne fichier txt
    Par soulryo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/09/2006, 22h05
  4. "Delete" de ligne dans une table
    Par en_stage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/08/2006, 16h37
  5. [VBA-E]DELETEr des lignes quand SOMME de 2 cellules =0
    Par AliochaBada dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2006, 01h03

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