Lire et écrire dans fichier fermé .CSV

  • Initiateur de la discussion Initiateur de la discussion JORDAN
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JORDAN

XLDnaute Impliqué
Bonjour tout le monde,

je souhaite actuellement modifier mon fichier qui devient très lourd d'utilisation,
environ 400 nouvelles lignes par jour.

c'est pour cela que je souhaiterai savoir s'il est possible de réaliser les actions suivantes avant de me lancer dans un mauvais choix :

1- Ecrire dans un fichier fermé au format CSV (Donnée issues d'une ListView) ?
2- Lire depuis ce fichier CSV et afficher les données pour d'éventuelles modifications
(ajout ou suppression de 1 ou plusieurs lignes dans le ListView)
puis réengistrer le fichier fermé CSV ?

Les données sont numérotées par ligne mais plusieurs lignes peuvent avoir le même n°,
si la ListView contient 10 lignes, ces 10 lignes auront le même N°, numérotation sous la forme : F12546 ou B32144 ou C211, soit 1 lettre et 5 chiffres maximum

Merci pour vos infos et bonne journée
 
Re : Lire et écrire dans fichier fermé .CSV

Bonjour tout le monde,

Je reviens avec mon post suite au lien fournit pas Hasco

J'ai bien récupéré le code pour envoyer les données de la listview vers
un fichier CSV, j'ai essayé de l'intégré dans un fichier test mais je n'arrive
pas le faire fonctionner (Fichier ListView1)
dans le fichier SaveListView, ça fonctionne bien mais est-il possible
de visualiser le code ?

Merci pour votre aide et bonne journée
 

Pièces jointes

Re : Lire et écrire dans fichier fermé .CSV

Re,

Juste une petite question :
Comment fait-on pour lancé une macro de ce type (2ème code)
via un CommandButton ?

j'ai essayé de mettre :
Code:
Private Sub CommandButton3_Click()
lvSaveToExcelFile
End Sub
[code]

Mais Excel n'en veut pas

[code]
Public Sub lvSaveToExcelFile(ByVal LV As ListView, ByRef FileName As String)
bla bla bla
End Sub
 
Re : Lire et écrire dans fichier fermé .CSV

Bonjour Jordan,

Vois ce qui a changé dans l'appel de la procédure et dans la procédure elle-même. Les exemples donnés dans le lien fournit plus haut sont valables dans VB6 mais doivent être adapter pour VBA. (Déclaration de FSO et son initialisation)

A+
 
Re : Lire et écrire dans fichier fermé .CSV

Bonjour Hasco,

Je te remercie beaucoup pour ton aide
J'ai bien vu ce qui avait changé, je vais essayer de décortiquer ça un peu plus
pour l'instant c pas très clair pour moi mais ça marche. c'est déjà un très bon point

Encore merci et bonne journée
 
Re : Lire et écrire dans fichier fermé .CSV

Re,
Je reviens à la charge avec mon problème
ton code fonctionne très bien, jusque là pas de soucis
j'ai essayé de le modifier légèrement afin que le fichier CSV
ne soit pas effacé à chaque sauvegarde mais que les données soient
ajoutées au fichier CSV
j'ai essayé de mettre : Set TXTstream = FSO.OpenTextFile(FileName, True)
à la place de : Set TXTstream = FSO.CreateTextFile(FileName, True)
mais ça ne va pas, je pense qu'avec Open c'est uniquement pour lire le fichier
j'ai fait pas mal de recheches sur internet, sans trouver d'exemple de ce type.
Comment dois-je modifier le code pour faire cela ??
par avance Merci
 
Re : Lire et écrire dans fichier fermé .CSV

Re,

Voici la procédure modifiée le module modifié:
Attention: les déclaration des fonction API WINDOWS 32 ont disparues ci-dessous. Elles ne sont apparement pas utiles pour ce que tu veux faire.(à moins qu'elles ne te servent ailleurs)

Code:
Option Explicit
'Constantes d'ouverture fichier textes
Public Const ForReading = 1        'Lecture
Public Const ForWriting = 0        'Ecriture
Public Const ForAppending = 8      'Ajout
'
'Constante de création si fichier inexistant
Public Const Create As Boolean = True
'================================================
'   SAUVEGARDER UNE LIST VIEW DANS UN FICHIER CSV
'================================================
Public Sub lvSaveToExcelFile(ByVal LV As ListView, Optional ByRef FileName As String = "", Optional Sep As String = ";")
    Dim i As Long
    Dim j As Long
    On Error Resume Next
    
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Dim TXTstream
    
    If FileName = "" Then FileName = ThisWorkbook.Path & "\TSTCSV.Csv"

    Set TXTstream = FSO.OpenTextFile(FileName, ForAppending, Create)
    With TXTstream
        
        For i = 1 To LV.ColumnHeaders.Count - 1
            .Write CStr(LV.ColumnHeaders(i).Text) & Sep
        Next
        
        .WriteLine CStr(LV.ColumnHeaders(LV.ColumnHeaders.Count).Text)
        
        For i = 1 To LV.ListItems.Count - 1
            .Write LV.ListItems(i).Text & Sep
            For j = 2 To LV.ColumnHeaders.Count - 1
                .Write LV.ListItems(i).SubItems(j - 1) & Sep
            Next
            .WriteLine LV.ListItems(i).SubItems(LV.ColumnHeaders.Count - 1)
        Next
        .Close
    End With
    Set TXTstream = Nothing
    Set FSO = Nothing
End Sub

Va voir ici et notament en bas de page tu as un lien pour télécharger la version française de l'aide script56.chm.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
20
Affichages
3 K
Retour