Importer et traiter des données d'un fichier CSV dans VB
Dan2468
Messages postés7Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention17 juin 2009
-
15 juin 2009 à 00:45
Dan2468
Messages postés7Date d'inscriptionlundi 15 juin 2009StatutMembreDernière intervention17 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)
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 & "")