Partage
  • Partager sur Facebook
  • Partager sur Twitter

Convertir en .CSV ou .XLS(X) un fichier .txt

Visual Basic 10

Sujet résolu
4 novembre 2012 à 14:56:17

Salut à tous ! :D

Je me lance tout juste dans la programmation en Visual Basic pour un projet pour le lycée.
J'ai une base de données en .txt qui contient plusieurs "champs" (genre : nom, prénom, identifiant, date de naissance...) le tout séparés par des virgules.

J'ai créé un programme qui s'occupe d'ouvrir le fichier dans Excel, ça ça fonctionne :D
Le problème, c'est qu'il me copie la ligne 1 dans A1, la ligne 2 dans A2... :euh:
Avez vous une méthode pour séparer les différents "champs" dans des cellules distinctes, depuis VB ?

Merci d'avance de vos réponse
A très vite

Quentin
  • Partager sur Facebook
  • Partager sur Twitter
CordialementQuentin
4 novembre 2012 à 16:04:04

salut

Pour un csv suffit de mettre des ; pour aller de cellules en cellules et \n pour sauter une ligne.

Normalement ton fichier txt si tu le renommes en csv doit bien s'ouvrir comme il faut.
dans un bloc note tu met :
toto;tutu;titi
toto;tutu;titi

tu le renommes en csv et ca marche.
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2012 à 17:38:09

Merci de ta réponse.
Le problème est que ce fichier texte m'est fourni et généré par une application tierce, et je ne peux pas y toucher...
Si tu as une méthode pour remplacer toutes les virgules par des point-virgule dans un .txt je prends aussi :)
  • Partager sur Facebook
  • Partager sur Twitter
CordialementQuentin
4 novembre 2012 à 18:01:24

un truc comme ca je pense:

List<string> toto = File.ReadAllLines("test.txt").ToList();
           List<string> tutu = new List<string>();
           foreach(string titi in toto)
           {
             tutu.Add(titi.Replace(',', ';'));
              
           }
           File.WriteAllLines("test.txt", tutu.ToArray());
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2012 à 18:20:26

Citation : Quentin Manon Gomes

Mhmm.. C'est du VB ? :euh:

Parce que moi j'ai écrit un truc comme ça :

ExcelCla = ExcelApp.Workbooks.OpenText.Filename(My.Computer.FileSystem.ReadAllText("C:\CREACARTE\Paramètres\base_auto_chemin.txt"), Origin = xlWindows, DataType:=xlDelimited, TextQualifier:=xlNone, ConsecutiveDelimiter:=False, TAB:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False)



Le problème c'est que

Origin = ExcelApp.Windows

est souligné en bleu (plus précisément le terme "Origin"... et c'est hors de mes capacités de comprendre pourquoi... :euh:

Sinon, encore Merci de perdre du temps pour moi :D



En fait j'ai compris pourquoi le "souligné en bleu", il manquait un ":"... :colere2:
MAIIIIS : ça fonctionne toujours pas :D
  • Partager sur Facebook
  • Partager sur Twitter
CordialementQuentin
4 novembre 2012 à 18:26:08

Non c'est du C# mais tu peux le convertir en VB. (y a des convertisseurs sur internet et même dans le post-it)
Ah ok tu utilise interop pour ton fichier excel.

Mon code marche pour remplacer les , en ; .
Tu utilises Path.ChangeExtension pour changer l'extension et voila tu as un csv
  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2012 à 19:40:30

Merci mais je me suis débrouillé autrement, j'ai carrément enregistré une macro sous VBA avec Excel de lancé et je l'ai adapté sur mon programme, ce qui donne :
Private Sub testmacroexcel()
        'Test macro Excel
        With ExcelApp.ActiveSheet.QueryTables.Add(Connection:=(My.Computer.FileSystem.ReadAllText("C:\CREACARTE\Paramètres\base_auto_chemin.txt")), Destination:=ExcelCla.Range("$A$1"))
            .Name = "code"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .RefreshStyle = ExcelApp.InsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .TextFilePromptOnRefresh = False
            .TextFilePlatform = 850
            .TextFileStartRow = 1
            .TextFileParseType = ExcelApp.Delimited
            .TextFileTextQualifier = ExcelApp.TextQualifierDoubleQuote
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFileSpaceDelimiter = False
            .TextFileColumnDataTypes = ExcelCla.Array(1, 1, 1, 1, 1)
            .TextFileTrailingMinusNumbers = True
            .Refresh(BackgroundQuery:=False)
        End With


Bonne continuation
Quentin
  • Partager sur Facebook
  • Partager sur Twitter
CordialementQuentin
23 mai 2014 à 11:35:46

Bonjour,

je viens solliciter humblement votre aide. je souhaite obtenir un exemplaire de chaque feuille EXCEL d'un classeur au format .CSV, et je souhaite faire cette opération à l'aide d'une macro présente de le fichier EXCEL qui contient les feuilles que je souhaite enregistrées séparement. jai 3 feuilles et je souhaite que la macro créée donc 3 fichiers CSV, un par feuille. j'ai utiliser l'enregistreur de macro et apporté quelque modification a mon code:

Sub enregistrementcsvdonne()
'
' enregistrementcsvdonne Macro


    Worksheets("Composition_fixation").Activate
        ActiveWorkbook.SaveAs Filename:= _
            "D:\Documents and Settings\fliamidi\My Documents\Composition_fixation.csv", FileFormat _
            :=xlCSV, CreateBackup:=False
        ActiveWorkbook.Save
       
    Worksheets("Id_PCOMP_Mat").Activate
        ActiveWorkbook.SaveAs Filename:= _
            "D:\Documents and Settings\fliamidi\My Documents\Id_PCOMP_Mat.csv", FileFormat _
            :=xlCSV, CreateBackup:=False
        ActiveWorkbook.Save
       
    Worksheets("Donnees_fixations").Activate
        ActiveWorkbook.SaveAs Filename:= _
            "D:\Documents and Settings\fliamidi\My Documents\Donnees_fixations.csv", FileFormat _
            :=xlCSV, CreateBackup:=False
        ActiveWorkbook.Save

End Sub

et j’obtiens ça dans le fichier de csv:

or moi je souhaite avoir sa:

chose étrange quand je n'utilise pas la macro et que j'enregistre à la main j'obtien le fichier que je souhaite mais avec la macro le résultat est pas le même.

merci d'avance pour votre aide

Faroud

  • Partager sur Facebook
  • Partager sur Twitter
8 novembre 2021 à 10:06:20

bonjour, j'ai un logiciel à créer pour lire un fichier plat en Excel et je voudrais savoir comment le faire en c#.

merci.

  • Partager sur Facebook
  • Partager sur Twitter