vba stockage de résultats dans un fichier csv

vba stockage de résultats dans un fichier csv - VB/VBA/VBS - Programmation

Marsh Posté le 19-06-2010 à 14:15:35    


 
Bonjour,
J'ai fais un programme sous vba qui fonctionne, mais dans certains cas je dépasse le nombre de lignes d'excel (65000), on m'a dit qu'au lieu de récupérer mes résultats sur une feuille dans excel ( comme c'est le cas pour l'instant) je n'avais qu'à récupérer mes résultats dans un fichier texte ou dans un csv, mais je n'arrive pas à le faire..
(sachez que pour l'instant les résultats sont stockés dans une feuille excel "résultats" et que je comptais lorsque celle ci était pleine, copier/coller les résultats dans un fichier csv, et ensuite vider la feuille excel, par la suite p-e que je stockerais directement les résultats dans le fichier csv mais pour l'instant je n'arrive même pas à envoyer quoi que ce soit dans ce fichier..)
Une amie qui n'est plus là pour m'aider, m'a donné un exemple :
Code :

Code :
  1. Dim oFSO
  2.     Dim strChemin As String
  3.     Dim strCheminComp As String
  4.  
  5.     Set oFSO = CreateObject("Scripting.FileSystemObject" )
  6.     strChemin = ThisWorkbook.Path
  7.     strCheminComp = ThisWorkbook.FullName
  8.  
  9.     dossier = oFSO.GetBaseName(strChemin)
  10.     Fichier = oFSO.GetBaseName(strCheminComp)
  11.     Dim stgOut1 As String
  12.     Dim stgOut2 As String
  13.    fich1 = "F:\outilswgsr"
  14.     Fich = fich1 & "\" & "resultats" & ".csv"
  15.  
  16.     Open Fich For Output As #1
  17.    
  18.        Do While Workbooks("" & Fichier & ".xls" ).Sheets("résultats" ).Cells(2, j).Value <> ""
  19.          
  20.                 stgOut1 = Sheets("résultats" ).Cells(2, j)
  21.            
  22.                 Do While Sheets("résultats" ).Cells(k, j) <> ""
  23.                     stgOut1 = stgOut1 & ";" & Sheets("résultats" ).Cells(k, j)
  24.                     k = k + 1
  25.                 Loop
  26.                 Print #1, (Trim(stgOut1))
  27.        
  28.             j = j + 1
  29.         Loop
  30.    
  31.     Close 1


 
cependant à la ligne "Do While" ça ne fonctionne plus et m'affiche le message d'erreur suivant : Erreur d'éxécution '1004' erreur définie par l'application ou par l'object..
 
il faut savoir que le fichier "résultats.csv" est bien créé, mais il est toujours vide.
Pouvez vous m'aider?
merci d'avance

Reply

Marsh Posté le 19-06-2010 à 14:15:35   

Reply

Marsh Posté le 19-06-2010 à 18:58:37    

Salut, un autre exemple ,il y en a des tonnes, à adapter sans doute


Option Explicit
 
Sub ExportCSV()
Dim Ws As Worksheet
Dim iRow As Long, iCol As Long
Dim i As Long, j As Long
Dim Rng As Range
Dim sStr As String, sPath As String
Dim NumFichier As Integer
Const Separateur As String = ";"
 
    Set Ws = ActiveSheet
 
    sPath = ThisWorkbook.Path & "\" & Ws.Name & ".csv"
 
    iCol = Ws.UsedRange.Columns.Count
    iRow = Ws.UsedRange.Rows.Count
 
    For i = 1 To iRow
        For j = 1 To iCol
            Set Rng = Ws.Cells(i, j)
            If Rng.NumberFormat = "@" Then
                sStr = sStr & Separateur & Rng.Value & _
                         Separateur & IIf(j < iCol, Separateur, "" )
            Else
                sStr = sStr & IIf(Rng.NumberFormat <> _
                                      "General", Format(Rng.Value, Rng.NumberFormat), _
                                      Rng.Value) & IIf(j < iCol, Separateur, "" )
            End If
        Next j
        sStr = sStr & IIf(i < iRow, vbCrLf, "" )
    Next i
 
    Close
    NumFichier = FreeFile
    If Len(sStr) > 0 Then
        Open sPath For Output As #NumFichier
            Print #NumFichier, sStr
        Close #NumFichier
    Else
        MsgBox "Pas de données dans feuille active"
    End If
 
    Set Rng = Nothing
    Set Ws = Nothing
 
End Sub


Pour info voir aussi http://www.excel-downloads.com/for [...] en-vb.html


Message édité par kiki29 le 20-06-2010 à 16:17:13
Reply

Marsh Posté le 21-06-2010 à 12:46:30    

Hello
 
@kiki29 : en quoi ca resoud le souci du nb de ligne > 65536 ?
 
Ton fichier source est de quel type ? Tu travailles sur Excel par souci de commodité ?
Sinon pour exporter en CSV il y a quand meme plus simple que d'ecrire dans un fichier texte ! Excel sait enregistrer en CSV tout seul comme un grand...


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed