Stocker des résultats dans un fichier csv en parant de vba

  • Auteur de la discussion linann
  • Date de début

linann

Nouveau membre
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:
 Dim oFSO
    Dim strChemin As String
    Dim strCheminComp As String

   
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    strChemin = ThisWorkbook.Path
    strCheminComp = ThisWorkbook.FullName
   
    dossier = oFSO.GetBaseName(strChemin)
    Fichier = oFSO.GetBaseName(strCheminComp)
    Dim stgOut1 As String
    Dim stgOut2 As String
   fich1 = "F:\outilswgsr"
    Fich = fich1 & "\" & "resultats" & ".csv"
   
    Open Fich For Output As #1

     
       Do While Workbooks("" & Fichier & ".xls").Sheets("résultats").Cells(2, j).Value <> ""
           
                stgOut1 = Sheets("résultats").Cells(2, j)
             
                Do While Sheets("résultats").Cells(k, j) <> ""
                    stgOut1 = stgOut1 & ";" & Sheets("résultats").Cells(k, j)
                    k = k   1
                Loop
                Print #1, (Trim(stgOut1))
         
            j = j   1
        Loop

     
    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
 

zeb

Modérateur
Bonjour,

Je relis ton code. C'est du VB. Alors pourquoi ces codes HTML ?

A la ligne "Do While" ça ne fonctionne plus
T'es gentil, mais il y en a plusieurs !

Ligne 20, tu utilises la variable j. Elle n'est ni déclarée, ni initialisée.

Ligne 20, toujours, tu précises le classeur, puis la feuille, puis la cellule. C'est bien.
Ligne 22, 24, 25, tu ne précises plus le classeur. Attention !

Mais pourquoi crées-tu un objet FileSystemObject ?
Tu ne te sers pas de dossier, et récupérer le nom du fichier d'un classeur que tu connais pour l'identifier est ridicule.

Code:
' // Code tordu !
Dim oFSO
Dim strCheminComp As String

Set oFSO = CreateObject("Scripting.FileSystemObject" )
strCheminComp = ThisWorkbook.FullName

Fichier = oFSO.GetBaseName(strCheminComp)

Do While Workbooks("" & Fichier & ".xls" ).Sheets("résultats" ).Cells(2, j).Value <> ""

' // Code simple, en une seule ligne !
Do While ThisWorkbook.Worksheets("résultats").Cells(2, j).Value <> ""

-----------------------------------------------------

Excel est un tableur, pas un système de gestion de bases de données. Il faudrait reconsidérer le choix de tes outils. Si tu disposes d'Access, je t'invite à t'y intéresser.

-----------------------------------------------------

Je n'ai pas compris pourquoi on te dit de passer par un fichier .csv.
D'après tes explications, tes fichiers .csv ne feront jamais plus de 65536 lignes (la limite exacte des feuilles Excel). Par ailleurs, si tes fichiers .csv venaient à dépasser cette limite, il ne pourraient plus être lus dans Excel. Mais peut-être n'est-ce pas la finalité.

-----------------------------------------------------

Plutôt que de corriger ce code, ce qui est somme toute facile, je te propose de reconsidérer la question. Nous pouvons t'aider ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 807
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut