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 :

VbScript Save .TxtFile Encodage.


Sujet :

VBScript

  1. #1
    Membre régulier
    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
    Points : 108
    Points
    108
    Par défaut VbScript Save .TxtFile Encodage.
    Bonjour,
    j'ai un script qui enregistre des donnés au niveau d'un fichier au format .txt . j'ai un autre script qui me retourne le nombre de ligne de ce fichier.

    le problème est : quand je créé un fichier manuellement et j'etulise CountLine pour retourne le nombre de ligne sa fonction bien.

    Par contre quand j'enregistre le fichier avec SaveFileTxt puis j'appelle le script CountLine pour compter le nombre de ligne sa me retourne 1 même si je voie que j'ai plusieurs ligne.

    J'ai pensée peut être que ces un problème d'encodage au moment de l'enregistrement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
       Sub SaveFileTxt (Value)
    	Set filesys = CreateObject("Scripting.FileSystemObject")
        Set demofolder = filesys.GetFolder(OutFilePath)
     
    	Set filetxt = demofolder.CreateTextFile("resulta", True)
     
    	filetxt.WriteLine(Value)
        filetxt.Close
        wait 4
        End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Sub CountLine ()
    		Set oFsObject = CreateObject("Scripting.FileSystemObject")
     
            Set New_File = oFsObject.OpenTextFile("Resulta.txt", 1)
            'recuperation d'un tableau de x lignes
            Ref_CountLign = Split(Ref_File.ReadAll, vbNewLine)
     
            New_File.Close       
            Ref_count_Line= UBound(Ref_CountLign)
    		msgbox Ref_count_Line '==> 1
        End Sub
    Merci D'avance.

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    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
    SaveFileTxt "Où se trouve la source du problème" & vbnewline & "Nouvelle ligne" & vbnewline & " 3ème ligne" & vbnewline & " 4ème ligne"
    CountLine
     
    Sub SaveFileTxt (Value)
        Set filesys = CreateObject("Scripting.FileSystemObject")
        Set demofolder = filesys.GetFolder(".")
        Set filetxt = demofolder.CreateTextFile("resulta.txt", True)
        filetxt.WriteLine(Value)
        filetxt.Close
       Wscript.Sleep 4
    End Sub
     
     Sub CountLine ()
         Set oFsObject = CreateObject("Scripting.FileSystemObject")
         Set New_File = oFsObject.OpenTextFile("Resulta.txt", 1)
            'recuperation d'un tableau de x lignes
          Ref_CountLign = Split(New_File.ReadAll, vbNewLine)
     
          New_File.Close       
          Ref_count_Line= UBound(Ref_CountLign)+1 ' Ici plus 1 car (je cite) UBound : Renvoie le plus grand indice disponible pour 
    		                              ' la dimension indiquée d'un tableau(l'indice le plus bas est 0)
                                                  ' Il peut s'agir d'un retour à la ligne qui sera vide
         msgbox Ref_count_Line 
    End Sub
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    L'affichage "1" de la procédure CountLine semble être dû au fait que tes fichiers n'avaient pas le même nom , comme le montre le code de l_autodidacte

    Petite évolution possible pour ne pas rencontrer à nouveau le problème :
    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
     
    strResultFilePath = ".\resulta.txt"
    SaveFileTxt "Où se trouve la source du problème" & vbnewline & "Nouvelle ligne" & vbnewline & " 3ème ligne" vbnewline & " 4ème ligne", strResultFilePath 
    CountLine strResultFilePath 
     
    Sub SaveFileTxt (Value, strResultFilePath)
        Set filesys = CreateObject("Scripting.FileSystemObject")
        Set demofolder = filesys.GetFolder(".")
        Set filetxt = demofolder.CreateTextFile(strResultFilePath, True)
        filetxt.WriteLine(Value)
        filetxt.Close
       Wscript.Sleep 4
    End Sub
     
     Sub CountLine (strResultFilePath )
         Set oFsObject = CreateObject("Scripting.FileSystemObject")
         Set New_File = oFsObject.OpenTextFile(strResultFilePath , 1)
            'recuperation d'un tableau de x lignes
          Ref_CountLign = Split(New_File.ReadAll, vbNewLine)
     
          New_File.Close       
          Ref_count_Line= UBound(Ref_CountLign)+1 ' Ici plus 1 car (je cite) UBound : Renvoie le plus grand indice disponible pour 
    		                              ' la dimension indiquée d'un tableau(l'indice le plus bas est 0)
         msgbox Ref_count_Line 
    End Sub
    Bonne continuation.

  4. #4
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    ou bien en tenant compte de la ==> Comment obtenir le nombre de lignes d'un fichier texte ?
    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
    SaveFileTxt "Où se trouve la source du problème" & vbnewline & "Nouvelle ligne" & vbnewline & " 3ème ligne" & vbnewline & " 4ème ligne"
    Call CountLine
     
    Sub SaveFileTxt(Value)
        Set filesys = CreateObject("Scripting.FileSystemObject")
        Set demofolder = filesys.GetFolder(".")
        Set filetxt = demofolder.CreateTextFile("resulta.txt",True)
        filetxt.WriteLine(Value)
        filetxt.Close
       Wscript.Sleep 4
    End Sub
     
     Sub CountLine()
         Set oFsObject = CreateObject("Scripting.FileSystemObject")
         Set New_File = oFsObject.OpenTextFile("Resulta.txt", 1)
          LireTout = New_File.ReadAll '-- Lit la totalité du fichier   
          msgbox New_File.Line '-- Récupère le nombre de lignes
          New_File.Close 
    End Sub
    @pichalov
    un petit oubli de & dans cette ligne qui a été editée et corrigée par autodidacte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SaveFileTxt "Où se trouve la source du problème" & vbnewline & "Nouvelle ligne" & vbnewline & " 3ème ligne" & vbnewline & " 4ème ligne", strResultFilePath

  5. #5
    Membre régulier
    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
    Points : 108
    Points
    108
    Par défaut
    Salut Tous le monde.
    aprés un petit Test j'ai détecter la source du probléme c que : suite a la fonction SaveFileTxt le fichier et enregistrer sous Format Unix pas sous Dos\windows :
    une solution pour convertir le fichier en Dos\windows au moment de l'enregistrement.?(PJ)
    Images attachées Images attachées  

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    D'après la miniature, tu utilises Notepad++
    Vas dans la barre de titre et déroule le menu Encodage puis sélectionne Encoder en ANSI
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre régulier
    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
    Points : 108
    Points
    108
    Par défaut
    Il s'agit pas de ANSi il s'agit du mode Unix et Windows\Dos : car quand je fait l'action suivent (voir PJ) la fonction retourne bien le nombre de ligne.(je pense ces au niveau de l'enregistrement du fichier il faut spécifier le mode windows\dos) ?
    Images attachées Images attachées  

Discussions similaires

  1. Une doc VBScript complète et compacte
    Par jérôme dans le forum ASP
    Réponses: 5
    Dernier message: 13/03/2013, 09h46
  2. Régler les paramètres d'encodage dans Image.Save()
    Par barbudor dans le forum Débuter
    Réponses: 0
    Dernier message: 14/11/2010, 16h45
  3. mail VBSCRIPT : encodage Pièce jointe en base64
    Par x-tasy dans le forum VBScript
    Réponses: 2
    Dernier message: 31/08/2010, 19h43
  4. [VB6] [Graphisme] Dimensions d'une image au saving
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/12/2002, 19h09
  5. Algo carry save adder
    Par bashou dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 18/10/2002, 11h32

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