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 :

Modification de caractère à partir d'une position


Sujet :

VBScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut Modification de caractère à partir d'une position
    bonjour,

    je souhaite modifier une chaine de caractère à partir d'une position sur chaque ligne d'un fichier text.

    je sais modifier et rechercher les carcatères sur l'ensemble du fichier mais pas sur une seule position.

    Quelqu'un peut m'aider?

  2. #2
    Expert éminent


    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
    Par défaut
    Avec le peu d'information que tu nous donne sur le contenu de ta chaine et la nature des caractères à modifier (position dans la ligne toujours la même pi âs ? nombre de caractères toujours le même ou pas ...)

    essai de voir si la solution n'est pas la :

    Manipulation des chaînes de caractères



  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    ok, je suis un peu juste en explication donc je reprends.

    voici le code utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Dim st 
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'Ouverture et lecture du fichier à modifier
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading)
    st = readAll.f
    f.Close
     
    'ecriture du fichier modifier... aprés avoir remplacer "00000" par "CBMTZ"..
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting)
    f.Write replace(st,"00000","CBMTZ")
    f.close
    Comme on peut le voir il doit remplacer les 00000 par CBMTZ .

    Sachant que cette chaine de caractère se trouve sur plusieurs positions, je cherche à les remplacer uniquement sur la position [428,432] de mon fichier txt.

    voir pièce jointe.

  4. #4
    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
    moi je dirais de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Right(Left(st,432),5) = "00000"
      f.Write Left(st,428) & "CBMTZ" & Right(st,Len(st) - 432) 'nombres à réajuster peut être - sûrement
    End If
    C'est de la bidouille, mais ça devrait marcher...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    je te remercie pour l'info sauf que maintenant il ne modifie que la première ligne et c'est tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting)
    If Right(Left(st,432),5) = "00000" Then
    f.Write Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432)
    End If
    f.close

  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
    ah oui, alors dans ce cas il faut lire le fichier ligne par ligne avec la méthode ReadLine de opentextefile (en mode lecture) et écrire en parralèle dans un fichier temporaire avec la méthode WriteLine de opentextefile (en mode écriture)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    j'ai fait des modifications mais je suis tjs au point mort

    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
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Dim st
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'Ouverture et lecture du fichier à modifier
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading)
    st = f.readAll
    Do While Not f.AtEndOfStream
    f.ReadLine
    Loop
    f.Close
     
    'ecriture du fichier modifier... aprés avoir remplacer "00000" par "CBMTZ"..
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForWriting)
    Do While Not f.AtEndOfStream
    If Right(Left(st,432),5) = "00000" Then
    f.WriteLine Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432)
    End If
    Loop
    f.close
    Le boulet a besoin d'aide!

  8. #8
    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
    ça devrait ressembler à ça :

    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
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f
    Dim st
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'Ouverture et lecture du fichier à modifier
    Set f = fso.OpenTextFile("c:\temp\test.txt", ForReading)
    Set f2 = fso.CreateTextFile("c:\temp\test.txt.tmp")
    Do While Not f.AtEndOfStream
      st = f.ReadLine
      If Right(Left(st,432),5) = "00000" Then
        f2.WriteLine Left(st,427) & "CBMTZ" & Right(st,Len(st) - 432)
      Else
        f2.WriteLine st
      End If
    Loop
    f.Close
    f2.close
    fso.deletefile ("c:\temp\test.txt")
    fso.MoveFile("c:\temp\test.txt.tmp", "c:\temp\test.txt")

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 85
    Par défaut
    Super un vrai Pro.

    Merci à toi pour ton aide précieuse.

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

Discussions similaires

  1. comment ouvrir un FileStream à partir d'une position choisie
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 19/06/2007, 13h58
  2. Réponses: 4
    Dernier message: 08/01/2007, 23h38
  3. [XSLT] [JavaScript] tri + affichage à partir d'une position
    Par Fabouney dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 21/11/2006, 08h46
  4. extraction caractère à partir d'une table
    Par By-nôm dans le forum Access
    Réponses: 6
    Dernier message: 04/08/2006, 15h13
  5. Réponses: 4
    Dernier message: 07/01/2006, 18h36

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