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 :

Conversion d'un fichier extension txt vers csv


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2021
    Messages : 4
    Par défaut Conversion d'un fichier extension txt vers csv
    Bonjour,

    Tout d'abord, je tiens à préciser que je suis super nouveau en VB et que j'arrive globalement à comprendre ce qui se trouve sur les autres forums mais pas à l'adapter.

    Bref, mon problème est que je dois convertir un fichier .txt en .csv. Mais c'est pas tout, mon fichier en pièce jointe possède ce caractère "|" qui n'est pas détecté par excel donc je plante. J'avais imaginé, remplacer le caractère dans le fichier .txt pour ensuite passer le fichier en csv et enregistrer le tout évidemment sous scripte VBScript. D'autant qu'à terme ce programme sera incorporé à un logiciel qui est indusoft web studio.
    J'aurai aussi besoin de mettre un en-tête à chaque colonne mais ça me parait pour le moment secondaire.

    Ma tentative (J'ai une erreur en pièce jointe concernant la partie replace):

    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
    'save as .txt
    Dim oFS,oFl
    Dim strNewText
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFl = oFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh") 
    oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers  en lectures seules.
     
    'replace "|" to ";" to be understandable by excel
    Const ForReading = 1
    Const ForWriting = 2
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    strNewText = Replace(strText, "|", ";" )
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting)
    objFile.WriteLine strNewText
    objFile.Close
    J'ai lu beaucoup de chose intéressante concernant l'importation d'un fichier txt sur excel avec le "delimiter" (la plus part du temps en VBA et non VBS, seulement je dois coder sur un environnement VBS est-ce que le VBS comprend les fonctionnalités VBA?) mais honnêtement j'ai pas capté grand chose

    Je vous remercie par avance pour votre aide!
    le fichier joint : test.txt
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    Salut, bienvenue sur DVP

    On voit qu'il n'y a pas de ; dans ton fichier mis en pièce jointe, mais comme on a pas le fichier de départ, ben on ne peut pas t'en dire plus.
    Donc le fichier avant l'opération Replace nous est indispensable.
    :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 ← ← 👈

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2021
    Messages : 4
    Par défaut
    Salut, Merci!

    Autant pour moi je me suis trompé de fichier, j'ai modifié ma pièce jointe dans mon message.

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    Ok

    Il faudra modifier les chemins et noms de fichiesr ainsi que libérer les commande non utile au solutionnent te ton problème Replace.
    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
     
    Function Replace(TextSrc, patrn, replStr)
      Dim regEx, str1
      Set regEx = New RegExp            ' Crée l'expression régulière.
      regEx.Pattern = patrn            ' Définit les critères.
      regEx.IgnoreCase = True            ' Ignore la casse.
      regEx.Global = True   ' Définit le champ d'application.
      Replace = regEx.Replace(TextSrc, replStr)   ' Effectue le remplacement
      Set regEx = Nothing
    End Function
     
    'save as .txt
    Dim objFSO
    Dim strNewText
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Set oFl = objFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh")
    'oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers  en lectures seules.
     
    'replace "|" to ";" to be understandable by excel
    Const ForReading = 1
    Const ForWriting = 2
     
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForReading)
    Set objFile = objFSO.OpenTextFile("C:\MesProgs\En VBScript et HTA\Replace\testSource.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    MsgBox strText
     
    strNewText = Replace(strText,"(\|)",";")
    MsgBox strNewText
    ''''''''''strNewText = Replace(strText, "|", ";" )  <============== A supprimer =====================
    'Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting)
    'objFile.WriteLine strNewText
    'objFile.Close
     
    Set objFile = Nothing
    Set objFSO = Nothing
    Un seul objet FileSystemObject suffit, tu peux le réutiliser pour tes différentes ouverture de fichiers
    :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 ← ← 👈

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2021
    Messages : 4
    Par défaut
    D'abord excusez-moi pour cette attente.

    J'ai essayé de faire avec ce que vous avez donné mais pour une raison que j'ignore tout fonctionne jusqu'à ce que je tente de remplacer dans le texte.
    Par exemple, j'ai utilisé l'exécutable qui ne fait que lire le fichier et qui renvoie les messages qui d'ailleurs correspondent à ce que je veux avec les ";".

    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
     
    Function Replace(TextSrc, patrn, replStr)
      Dim regEx, str1
      Set regEx = New RegExp            ' Crée l'expression régulière.
      regEx.Pattern = patrn            ' Définit les critères.
      regEx.IgnoreCase = True            ' Ignore la casse.
      regEx.Global = True   ' Définit le champ d'application.
      Replace = regEx.Replace(TextSrc, replStr)   ' Effectue le remplacement
      Set regEx = Nothing
    End Function
     
    'save as .txt
    Dim objFSO
    Dim strNewText
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Set oFl = objFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh")
    'oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers  en lectures seules.
     
    'replace "|" to ";" to be understandable by excel
    Const ForReading = 1
    Const ForWriting = 2
     
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt", ForReading)
    'Set objFile = objFSO.OpenTextFile("C:\MesProgs\En VBScript et HTA\Replace\testSource.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    MsgBox strText
     
    strNewText = Replace(strText,"(\|)",";")
    MsgBox strNewText
    'Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt", ForWriting)
    'objFile.WriteLine strNewText
    'objFile.Close
     
    Set objFile = Nothing
    Set objFSO = Nothing
    Ensuite j'ai essayé séparément comme ça ne marchait pas de créer simplement le fichier et ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'save as .txt
    Dim oFl
    Set oFSO = CreateObject("Scripting.FileSystemObject") 
    Set oFl = oFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh") 
    oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt",False
    J'ai essayé le code pour remplacer dans le fichier sans auparavant le créer et ça fonctionne.

    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
     
    Function Replace(TextSrc, patrn, replStr)
      Dim regEx, str1
      Set regEx = New RegExp            ' Crée l'expression régulière.
      regEx.Pattern = patrn            ' Définit les critères.
      regEx.IgnoreCase = True            ' Ignore la casse.
      regEx.Global = True   ' Définit le champ d'application.
      Replace = regEx.Replace(TextSrc, replStr)   ' Effectue le remplacement
      Set regEx = Nothing
    End Function
     
    'save as .txt
    Dim objFSO
    Dim strNewText
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'Set oFl = objFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh")
    'oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt",False ' Le paramétre "Force" à False n'autorise pas d'effacer les fichiers  en lectures seules.
     
    'replace "|" to ";" to be understandable by excel
    Const ForReading = 1
    Const ForWriting = 2
     
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt", ForReading)
    'Set objFile = objFSO.OpenTextFile("C:\MesProgs\En VBScript et HTA\Replace\testSource.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    MsgBox strText
     
    strNewText = Replace(strText,"(\|)",";")
    MsgBox strNewText
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test3.txt", ForWriting)
    objFile.WriteLine strNewText
    objFile.Close
     
    Set objFile = Nothing
    Set objFSO = Nothing
    Et enfin j'ai tenté le code complet et là échec avec cette erreur:

    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
     
    Function Replace(TextSrc, patrn, replStr)
      Dim regEx, str1
      Set regEx = New RegExp            ' Crée l'expression régulière.
      regEx.Pattern = patrn            ' Définit les critères.
      regEx.IgnoreCase = True            ' Ignore la casse.
      regEx.Global = True   ' Définit le champ d'application.
      Replace = regEx.Replace(TextSrc, replStr)   ' Effectue le remplacement
      Set regEx = Nothing
    End Function
     
    'save as .txt
    Dim objFSO
    Dim oFl
    Dim strNewText
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set oFl = objFSO.GetFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh")
    oFl.Copy "C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt",False 
     
    'replace "|" to ";" to be understandable by excel
    Const ForReading = 1
    Const ForWriting = 2
     
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForReading)
    'Set objFile = objFSO.OpenTextFile("C:\MesProgs\En VBScript et HTA\Replace\testSource.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    MsgBox strText
     
    strNewText = Replace(strText,"(\|)",";")
    MsgBox strNewText
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting)
    objFile.WriteLine strNewText
    objFile.Close
     
    Set objFile = Nothing
    Set objFSO = Nothing
    Nom : erreur vbs créer un fichier.png
Affichages : 664
Taille : 31,3 Ko

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    Salut

    Essayes en ajoutant le dernier paramètre True ligne 33 de ton dernier code du postage ci-dessus, j'avais mis en commentaire ces lignes et je n'ai pas fait attention au manque de ce paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting, True)
    :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 ← ← 👈

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2021
    Messages : 4
    Par défaut
    Salut,

    J'ai essayé et ça n'a pas suffit alors une idée à murie dans ma tête puisque j'avais lu auparavant des trucs sur l'encodage.
    Et donc ça c'est vérifié. Le problème vient du fait que mon fichier d'origine .alh est en unicode donc j'ai trouvé un moyen peut être pas élégant mais fonctionnel, d'enregistrer mon fichier en Ascii et maintenant ça marche.
    Je mets le code en dessous pour les prochains.
    Merci beaucoup ProgElecT!!!

    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
     Function Replace(TextSrc, patrn, replStr)
      Dim regEx, str1
      Set regEx = New RegExp            ' Crée l'expression régulière.
      regEx.Pattern = patrn            ' Définit les critères.
      regEx.IgnoreCase = True            ' Ignore la casse.
      regEx.Global = True   ' Définit le champ d'application.
      Replace = regEx.Replace(TextSrc, replStr)   ' Effectue le remplacement
      Set regEx = Nothing
    End Function
     
    'save as .txt
    Dim objFSO
    Dim strNewText
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
     ' Convert Unicode to Ascii
    Const ForReading = 1, ForWriting = 2
    Const ModeAscii = 0, ModeUnicode = -1
    Dim f_in, f_out
     
    Set f_in = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\al201205.alh", ForReading,, ModeUnicode)
    Set f_out = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting, true, ModeAscii)
    Do Until f_in.AtEndOfStream
       f_out.Write f_in.Read(1)
    Loop
    f_in.Close
    f_out.Close
     
    'replace "|" to ";" to be understandable by excel
     
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForReading, True)
    'Set objFile = objFSO.OpenTextFile("C:\MesProgs\En VBScript et HTA\Replace\testSource.txt", ForReading)
    strText = objFile.ReadAll
    objFile.Close
    MsgBox strText
     
    strNewText = Replace(strText,"(\|)",";")
    MsgBox strNewText
    Set objFile = objFSO.OpenTextFile("C:\Users\cchopard\Desktop\VM\Backup_Projet\PSA_Ring_Gear_8_ihm2bis\Alarm\test2.txt", ForWriting, True)
    objFile.WriteLine strNewText
    objFile.Close
     
    Set objFile = Nothing
    Set objFSO = Nothing

  8. #8
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 127
    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 127
    Par défaut
    salut

    s'est sympa d'avoir mis la solution, cela servira sûrement à d'autres.
    :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 ← ← 👈

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

Discussions similaires

  1. [XL-2007] fichier en extension .txt vers excel
    Par Debutant10 dans le forum Conception
    Réponses: 1
    Dernier message: 09/11/2011, 09h15
  2. Réponses: 0
    Dernier message: 30/03/2009, 12h47
  3. Importer un fichier texte txt vers mysql
    Par pasc06 dans le forum Débuter
    Réponses: 1
    Dernier message: 31/01/2009, 17h58
  4. Réponses: 0
    Dernier message: 17/07/2008, 16h12
  5. Conversion fichier plat vers CSV
    Par linar009 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/11/2006, 13h35

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