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 :

Ajout ligne aprés N°ligne précis dans fichier txt


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut Ajout ligne aprés N°ligne précis dans fichier txt
    Salut tout le monde

    Je me confronte à une nouvelle difficulté dont je ne trouve pas de réponse sur le net.
    Le but étant de pouvoir ajouter une nouvelle ligne aprés le N° d' une ligne precise.

    exemple contenue du fichier texte:

    netprinter...a
    netprinter...b
    netprinter...c

    Ajout apres ligne n°2 (le contenue du fichier texte devient)

    netprinter...a
    netprinter...b
    Nouvelle ligne ajouté
    netprinter...c

    Pour le moment je procede ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Const ForReading = 1, ForWriting = 2 
    Dim oFso, f,insertion
    Dim ts, nl
      Set oFso = CreateObject("Scripting.FileSystemObject")
      Set f = oFso.OpenTextFile("c:\testvbs\MIAP21.txt", ForReading)
      ts = f.ReadAll '-- Lit la totalité du fichier
      insertion = f.line -2
      Wscript.echo insertion
      Wscript.echo f.Line    '-- Récupère le nombre de lignes
    insertion recoit donc une valeur qui correspond au numeros de la ligne aprés laquel je dois ajouter ma nouvelle ligne(dans tout les cas il s'agit de l 'avant derniere ligne du fichier)

    En gros je recherche une methode pour pouvoir

    Si N° de ligne en cours de lecture = insertion
    Alors
    Ajout à la ligne
    Fsi

    je bloque pour recuperé la valeur de la ligne en cours de lecture


    je sais pas si j'ai était bien clair

    merci à ceux qui essayerons de m 'aider

  2. #2
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    Bonjour dubinc38.

    Il faut que tu lises le fichier ligne par ligne avec la propriété ReadLine de ton fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Do While Not f.AtEndOfStream
      f.ReadLine
    Loop
    ainsi tu pourras récupérer la ligne que tu veux.

    Après si tu sais pas le numéro de ta ligne et que tu veux l'antépénultième, tu as plusieurs solutions.

    Tu peux faire l'opération 2 fois en comptant la première fois tes lignes et la deuxième fois en récupérant ta ligne qui va bien.
    Tu peux aussi stocker tes lignes dans un tableau de 3 chaines, et récupérer l'antépénultième valeur de ce que t'as écrit.
    Il doit aussi y avoir d'autres méthodes, à toi de trouver celle qui te convient le mieux.

    Voilà bon courage

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    Citation Envoyé par pitchalov Voir le message
    Tu peux faire l'opération 2 fois en comptant la première fois tes lignes et la deuxième fois en récupérant ta ligne qui va bien.

    Tout d'abord merci de ton aide ,

    Concernant les 2 fois j ai essayer de faire sa en faisant dans un premier temps lecture complette du fichier pour avoir le nombre de ligne

    Puis dans un second temps lecture ligne par ligne avec une comparaison sur la ligne en cours de lecture et la ligne apres laquelle je doit ajouter ma nouvelle ligne

    et bien j'obtient une erreur du style depassement de la taille du fichier

  4. #4
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    pitchalov t'a donné le point de départ


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    i = 0
    Do While Not f.AtEndOfStream
       Redim preserve Ligne(i)  
       Ligne(i) = f.ReadLine
       i = i + 1
    Loop
    Avec ça tu as un tableau de tes lignes et i - 1 correspond au nombre total de lignes de ton fichier.

    Donc, tu peux faire un truc comme ça après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for j = 1 to i - 1
       if j = 2 then
          ajout de la ligne à insérer
       else
          ajout de Ligne(j)
    next

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    ok merci

    je vais plancher la dessus et l'adapter à mon probleme

  6. #6
    Membre chevronné Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Par défaut
    je pense que ton problème vient du fait que tu continue à lire le fichier alors que tu es arrivé à la fin : et ouais alors là il aime pas

    Si tu utilises cette méthode (je pense pas que ce soit la meilleure, car elle est lourde, j'avais juste balancé une idée), alors il faut que la première fois tu compte le nombre de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    i=0
    Do While Not f.AtEndOfStream
       f.ReadLine
       i = i + 1
    Loop
    et que tu fermes ton fichier puis le réouvres (pour le reprendre depuis le début) puis que su récupères ta ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    j=0
    Do While Not f.AtEndOfStream
       If j = i Then
         Wscript.echo f.ReadLine
       Else
         f.ReadLine
       End If
       j = j + 1
    Loop
    Sinon la technique de pc75 est encore une autre méthode, et qui doit aussi très bien fonctionner

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 26
    Par défaut
    bonjour tout le monde le newbie vous salut

    je suis partit sur la solution proposé par pc75 mais j'avoue que je bloque sur cette maudite dernier ligne je rajoute toujours ma nouvelle ligne apres la derniere.
    j'ai fait divers teste et je me rtetrouve soit avec une insertion qui ne se fait plus soit qui se fait à la derniere ligne

    Mon code ressemble à sa :

    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
    while Not File.AtEndOfStream 
    redim tableau (i)
     Redim preserve tableau(i)  
    lignes = File.Readline
    tableau(i) = lignes
    i = i + 1 
     
    'Convertion en minuscule de la ligne avant recherche
    lignes = Lcase(lignes)
    '----------
    ' Recherche d'une chaine de caractère dans une phrase + copie du fichier dans le nouveau repertoire
    '----------
    msgbox i,,objfile.Path
    pos=InStr(lignes,schaine)
    if pos = 1 then 
          'Ajout de la ligne relative à Proclu01ps
           Set WshShell = WScript.CreateObject("WScript.Shell")
           Set fso = CreateObject("Scripting.FileSystemObject")
           Set fichier = fso.OpenTextFile(objfile.Path,8,true)
           fichier.writeline("Netprinter|\\proclu01ps\"& proclu &"|Y") 
     
       Set FSO = CreateObject("Scripting.FileSystemObject")
       'Copie du fichier
       Set Ftxt = fso.GetFile(objfile.Path)   'Fichier origine
       Ftxt.copy("chemindelacopie") 'emplacement destination
    end if 
    wend
    File.Close
    Set File = nothing
    End if   
    Next
    End Function
    Si l'un d'entre vous a une idée je suis preneur

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

Discussions similaires

  1. Insérer ligne de texte dans fichier .txt
    Par Gatsu_67 dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 06/11/2008, 07h25
  2. Réponses: 14
    Dernier message: 12/06/2008, 14h58
  3. PHP ajout Texte dans fichier TXT
    Par malabarbe dans le forum Langage
    Réponses: 5
    Dernier message: 02/05/2008, 04h11
  4. Réponses: 2
    Dernier message: 19/03/2007, 20h52
  5. prb retour a la ligne dans fichier txt telecharge avec php
    Par supersonicblonde dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2006, 14h20

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