Importer et traiter des données d'un fichier CSV dans VB

Dan2468 Messages postés 7 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 17 juin 2009 - 15 juin 2009 à 00:45
Dan2468 Messages postés 7 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 17 juin 2009 - 15 juin 2009 à 10:31
Bonjour,





J'ai un projet en VBA et j'aimerais le développer en VB (VB 2008 express).





Mais je ne suis pas capable de traduire une partie de mon code.





Voici ce que fait mon programme en VBA:





1-Affiche une fenêtre permettant de sélectionner un fichier .csv


2-Lit le fichier .csv et copie les valeurs dans une feuille de excel


3-Ouvre un userform et affiche les valeurs sous forme de liste


4-Si on désire corriger une valeur, on doubleclick sur la ligne et excel ouvre un autre formulaire ou l'on peut corriger les valeurs


5-Une fois les données corrigées, on clique sur un bouton qui permet d'enregistrer les données dans un fichier csv.





J'inclus mon code VBA pour vous aider a comprendre...





Je ne sais pas trop comment sauvegarder mes donnees en VB. En VBA, je les sauvegardais simplement dans une feuille excel.  Vos suggestions seront très appréciées!!

Merci beaucoup... je suis un peu désespéré pour être bien honnête!


<hr />

Private Sub cmdExtStmt_Click()
Call LectureCSV
Unload Me
frmRevStmt.Show
End Sub
<hr />
Sub LectureCSV()
Dim Fichier As Variant
    ChDrive "C"
    ChDir ThisWorkbook.Path
    Fichier = Application.GetOpenFilename("Fichier CSV (*.csv), *.csv")
    If Fichier <> False Then Lire Fichier
End Sub

<hr />
Private Sub Lire(ByVal NomFichier As String)
Dim chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim l As IntegerConst Separateur As String * 1 ","    l Len(NomFichier)
    Worksheets("Data").Cells(9, 5) = Mid(NomFichier, l - 4, 1) + 1
    Worksheets("Data").Cells(4, 4) = Mid(NomFichier, InStrRev(NomFichier, "") + 1, InStr(NomFichier, "_") - InStrRev(NomFichier, "") - 1)
    Worksheets("Data").Cells(4, 5) = WorksheetFunction.VLookup(Worksheets("Data").Cells(4, 4), Range("ID_Nb_Name"), 2, False)
   
    Worksheets("Values").Cells.Clear
    Application.ScreenUpdating = False

    Close
    NumFichier = FreeFile

    iRow = 0
    Open NomFichier For Input As #NumFichier
        Do While Not EOF(NumFichier)            iCol 1: iRow iRow + 1
            Line Input #NumFichier, chaine
            Ar = Split(chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                Worksheets("Values").Cells(iRow, iCol) = Ar(i)
                iCol = iCol + 1
            Next i
        Loop
    Close #NumFichier

    Application.ScreenUpdating = True
End Sub

<hr />
Private Sub cmdCCSVRS_Click()
       
'Confirmation before delete the data and create the CSV fileAnswer MsgBox("You are about to create the .csv file. Do you wanna go ahead?", vbYesNo)If Answer vbYes Then

    Dim directory As String
    'Identification of the Co, directory and create the .csv file
    directory = Worksheets("Data").Cells(9, 4)
    cienb = Worksheets("Data").Cells(4, 4)
    stmid = Worksheets("Data").Cells(4, 6)
    Version = Worksheets("Data").Cells(9, 5)
    csv = directory & cienb & "_" & stmid & "_" & Version & ".csv"
    dircsv = dir(cienb & "_" & stmid & "_" & Version & ".csv")

    If Not dir("dircsv") = "" Then
        MsgBox ("The file already exist. Are you sure you want to overwrite it?")
    End If
   
    Set FSO = CreateObject("scripting.filesystemobject")
    Set ctf = FSO.createtextfile(csv, True)

    For i = 1 To Worksheets("Values").Range("A65536").End(xlUp).Row
        j = ""
        For k = 1 To 48
        j = j & Worksheets("Values").Cells(i, k) & ","
        Next k
        ctf.writeline j
    Next i

    'Clear excel data
    Worksheets("Values").Range("A1:AV65536").Clear

    'Confirmation message
    MsgBox ("You can find your .csv file at this place : " & csv & "")

    Unload Me
    frmStmt.Show

End If

End Sub

1 réponse

Dan2468 Messages postés 7 Date d'inscription lundi 15 juin 2009 Statut Membre Dernière intervention 17 juin 2009
15 juin 2009 à 10:31
J'ai trouvé comment afficher une fenêtre me permettant de sélectionner mon fichier csv et de me renvoyer son addresse.

Par contre, j'ai épluché tout les forums sans trouver comment lire le fichier csv dans un array....

En fait, j'aimerais savoir comment passer de csv--->Array--->csv

Merci beaucoup
0
Rejoignez-nous