Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1639 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  vba stockage de résultats dans un fichier csv

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

vba stockage de résultats dans un fichier csv

n°2002959
iscia
Posté le 19-06-2010 à 14:15:35  profilanswer
 


 
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

mood
Publicité
Posté le 19-06-2010 à 14:15:35  profilanswer
 

n°2003006
kiki29
Posté le 19-06-2010 à 18:58:37  profilanswer
 

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
n°2003279
SuppotDeSa​Tante
Aka dje69r
Posté le 21-06-2010 à 12:46:30  profilanswer
 

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 !

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  vba stockage de résultats dans un fichier csv

 

Sujets relatifs
[DIVERS] Auto execution d'un programme à l'ouverture d'un fichier zipProbleme sur la copie de fichier
[shell] récupération infos dans .txt et écriture dans un autre fichier[AC-2007]Affichage de tous les résultats d'une requête dans un seul ch
envoi de fichier par FTP[perl] Traitement de fichier .csv
[RESOLU] [SHELL] extraction et reformattage des données d'un fichier[Resolu] Ouvrir un fichier ".csv" par macro proprement
Enregistrement d'un fichier texte dans une procédure récursive 
Plus de sujets relatifs à : vba stockage de résultats dans un fichier csv


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR