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 :

FileSystemObject / WriteLine / Readline


Sujet :

VBScript

  1. #1
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut FileSystemObject / WriteLine / Readline
    Salut à tous,

    j'ai un petit souci avec un FileSystemObject. Ce que je souhaite faire, c'est lire un fichier texte avec "OpenTextFile" et le lire de façon séquentielle, ligne par ligne, afin d'écrire la ligne en question dans un autre fichier texte après lui avoir fait subir différentes modifications...

    Voici ce que j'ai codé :

    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
    Sub ImportFileF2()
     
        Dim FSO As Object, SourceFile As Object, DestFile As Object
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
     
        Set SourceFile = FSO.OpenTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt", ForReading)
     
        Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt" & "GeneratedTextFile.txt")
     
        While Not SourceFile.AtEndOfStream
     
            'Ici j'écris dans le fichier de destination ma ligne provenant de mon fichier source
            DestFile.WriteLine SourceFile.Readline & Chr(13)
     
        Wend
     
        Set DestFile = Nothing
     
        Set SourceFile = Nothing
     
        Set FSO = Nothing
     
    End Sub
    Hélas ca ne me donne pas ce que je veux... Au lieu d'aller à la ligne, il m'écrit 3 petits carrés. Pourtant avec Chr(13) ca devrait fonctionner, non ?

    Merci d'avance pour votre aide

    laloune

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    pas forcement en vbs.
    Tu veux mettre une ligne de séparation entre tes lignes ?
    parce que writeline effectue déjà un retour à la ligne.
    moi perso pour mettre des lignes de séparation de suis barbare je fait des
    writeline("")
    Et j'en épète autant que je veux insérer des sauts de ligne.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Salut,

    tu peux essayer en remplacant Chr(13) par VbCrlf.
    Sinon, tu es sûr de ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt" & "GeneratedTextFile.txt")
    du moins, il doit manquer un espace entre avant ou après tes guillemets et ton &

    A++

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Citation Envoyé par RadPAT Voir le message
    Salut,

    tu peux essayer en remplacant Chr(13) par VbCrlf.
    Sinon, tu es sûr de ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt" & "GeneratedTextFile.txt")
    du moins, il doit manquer un espace entre avant ou après tes guillemets et ton &

    A++
    Heu...
    s'il met un espace cela fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Documents and Settings\user\Bureau\Macro\Source.txt GeneratedTextFile.txt"
    je ne suis pas sur que cela soit valide comme argument de CreateTextFile.
    Enfin moi cela m'avait échapé, j'ai lu trop vite

  5. #5
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    merci à vous deux pour vos réponses !

    hélas ca ne semble pas fonctionner... Dans les 3 cas (vbCrlf, rien si WriteLine effectue un retour à la ligne, et DestFile.WriteLine("")), ca m'écrit tout un tas de petits carrés au lieu de retourner à la ligne... étrange...

    concernant l'argument de CreateTextFile j'ai fait une erreur en copiant (j'ai modifié le chemin d'accès parce que il contient mon nom et mon prénom

    la bonne syntaxe que j'ai dans mon code est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\GeneratedTextFile.txt")

  6. #6
    Membre chevronné
    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Par défaut
    Exact,

    sauf que si il ne met pas d'espace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt" & "GeneratedTextFile.txt")
    revient à dire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txtGeneratedTextFile.txt")
    et du coup il y a un pb.
    Je ne vois pas ce que l'on peut faire avec cette syntaxe.
    De plus il faudrait que tu déclares le fichier en sortie en format 2 (forwriting).

    A++

  7. #7
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Citation Envoyé par RadPAT Voir le message
    De plus il faudrait que tu déclares le fichier en sortie en format 2 (forwriting).

    A++
    en effet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\plorentz.INTL\Bureau\Macro_F2_CRC\" & "GeneratedTextFile.txt", ForWriting)
    ceci dit, ca fonctionne également sans le ForWriting (constante). Mais c'est vrai que c'est plus rigoureux

  8. #8
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    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
    Sub ImportFileF2()
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set SourceFile = FSO.OpenTextFile("C:\Documents and Settings\user\Bureau\Macro\Source.txt", ForReading)
    Set DestFile = FSO.CreateTextFile("C:\Documents and Settings\user\Bureau\Macro\GeneratedTextFile.txt", ForWriting)
    While Not SourceFile.AtEndOfStream
         DestFile.WriteLine SourceFile.Readline
         DestFile.WriteLine("")
    Wend
    Set DestFile = Nothing
    Set SourceFile = Nothing
    Set FSO = Nothing
    End Sub
    Ceci ne marche pas ?
    Tu ouvres ton fichier texte avec quel éditeur après exécution du script ?

  9. #9
    Membre éclairé Avatar de laloune
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2005
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Mai 2005
    Messages : 487
    Par défaut
    Tu ouvres ton fichier texte avec quel éditeur après exécution du script ?
    je l'ouvre simplement avec le bloc-notes... y'a mieux ? (sans aucun doute, mais si je l'ouvre c'est surtout pour voir si la moulinette a fonctionné )

    mais je viens de tester un truc : je me suis dit que ce n'était pas nécessairement la macro, mais mon fichier texte qui péchait... Bingo, j'ai enregistré mon fichier texte source en format ANSI (au lieu de Unicode), relancé ma macro, et ca fonctionne...

    du coup il faudra que j'enregistre mes fichiers source dans ce format...

    Merci pour votre aide en tous cas !

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

Discussions similaires

  1. Scripting.FileSystemObject
    Par pmboutteau dans le forum ASP
    Réponses: 2
    Dernier message: 24/03/2005, 13h31
  2. [ServerSocket] Problème de bloquage sur readLine()
    Par thomaswilliamson dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 15/03/2005, 11h15
  3. readline
    Par diddy dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/10/2004, 14h32
  4. PROBLEME AVEC FileSystemObject
    Par alfu dans le forum ASP
    Réponses: 11
    Dernier message: 06/10/2004, 16h18
  5. [readline] temps de lecture
    Par fredericL dans le forum Entrée/Sortie
    Réponses: 15
    Dernier message: 11/05/2004, 16h05

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