format csv

chevet34

XLDnaute Nouveau
Bonjour à tous,

Je vous sollicite pour résoudre un problème de format csv.

Pour la comptabilisation de longues écritures, j'utilise un fichier Excel que je transforme en fichier csv. Le fichier csv est alors exporté dans le logiciel comptable.

Le souci est le suivant :
si j'utilise la macro suivante :

Sub savecsv()

Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"c:\fichiercsv.csv", FileFormat:=xlCSV, _
CreateBackup:=False

End Sub

Le fichier est alors sauvé dans le bon format mais je dois le fermer "manuellement". Quand je l'ouvre, le fichier est bien lisible et s'exporte sans difficulté.

Par contre, si je prolonge la macro pour fermer ce fichier:

Sub savecsvbis()

Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"c:\fichiercsvbis.csv", FileFormat:=xlCSV, _
CreateBackup:=False
ActiveWindow.Close
End Sub

le fichier n'est plus aussi "lisible" et je ne peux plus l'exporter dans mon logiciel, les chiffres avec 2 décimales ayant été transformés.
Merci d'avance pour votre aide
 

Pièces jointes

  • FICHIERXLS.xls
    18.5 KB · Affichages: 59

2passage

XLDnaute Impliqué
Re : format csv

Bonjour,

Je voudrais bien des précisions sur le "plus aussi lisible" (message d'erreur ? rejet de l'import ?...) et sur le "ayant été transformés" (séparateur décimal ? séparateur de champ ? ajout de CR/LF ?...) parce que j'ai testé les 2 macros sur ma machine et je ne vois aucune différence entre les 2 fichiers

++
 

ROGER2327

XLDnaute Barbatruc
Re : format csv

Bonjour à tous
Même constatation que celle de 2passage pour moi : pas de différence apparente entre le résultat des deux procédures.
Dans les deux cas, le séparateur décimal enregistré dans le fichier .csv est le séparateur décimal "système" (même si on a choisi un autre séparateur décimal dans les options d'Excel).​
ROGER2327
#3801


Dimanche 15 Gidouille 137 (Sainte Giborgne, vénérable, ST)
11 Messidor An CCXVIII
2010-W26-2T11:23:35Z
 

chevet34

XLDnaute Nouveau
Re : format csv

Déjà merci de vous pencher sur ce problème.
En annexe deux fichiers csv :
- fichiercsv.csv est fermé manuellement avec les réponses oui, ok, oui aux questions du système
- fichiercsvbis.csv est fermé par la deuxième macro.

A+
 

mromain

XLDnaute Barbatruc
Re : format csv

Bonjour à tous,

Voici un essai avec la macro suivante :
VB:
Sub testExportCsv()

'déclaration des variables
Dim derCol As Long, derLig As Long, iL As Long, iC As Long
Dim pathFichierCsv As String, ligneCsv As String
Dim fichierCsv As Object

    'définition du fichier csv destination
    pathFichierCsv = "c:\fichierCsv.csv"
    
    'créer/ouvrir le fichier csv en écriture
    Set fichierCsv = CreateObject("Scripting.FileSystemObject").OpenTextFile(pathFichierCsv, 2, True)
    
    With ThisWorkbook.Sheets("Feuil1")
    
        'claculer le numéro de la dernière colonne
        derCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
        'claculer le numéro de la dernière ligne
        derLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        
        'boucler sur toutes les lignes
        For iL = 1 To derLig
            'initialiser la ligne csv
            ligneCsv = ""
            'boucler sur toutes les colonnes
            For iC = 1 To derCol
                'ajouter l'élément à la ligne csv et un ";"
                ligneCsv = ligneCsv & .Cells(iL, iC).Text & ";"
            Next iC
            'enlever le dernier ";" à la ligne csv
            ligneCsv = Left(ligneCsv, Len(ligneCsv) - 1)
            'écrire la ligne csv dans le fichier csv
            fichierCsv.WriteLine ligneCsv
        Next iL
    End With
        
    'fermer le fichier csv
    fichierCsv.Close: Set fichierCsv = Nothing
End Sub
A+
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : format csv

Re...
voici un fichier excel avec un onglet pour chaque résultat obtenu.
Vu !
Trop fort pour moi : je passe...

(Fichiers joints : fichiers obtenus avec chacune des deux procédures.)​
ROGER2327
#3803


Dimanche 15 Gidouille 137 (Sainte Giborgne, vénérable, ST)
11 Messidor An CCXVIII
2010-W26-2T12:04:36Z
 

Pièces jointes

  • fichiercsv.zip
    850 bytes · Affichages: 30
  • fichiercsv.zip
    850 bytes · Affichages: 35
  • fichiercsv.zip
    850 bytes · Affichages: 31

2passage

XLDnaute Impliqué
Re : format csv

Re...

Une petite question :
La commande "ActiveWindow.Close" doit proposer une sauvegarde au moment de la fermeture. Je me demande si ce n'est pas à ce moment là qu'Excel change quelque chose dans le format (Clairement, dans le 2eme onglet, le séparateur décimal est devenu un point).
Je propose d'esssayer de remplacer "ActiveWindow.Close" par
"ActiveWorkbook.Close False" pour voir.
++
 

chevet34

XLDnaute Nouveau
Re : format csv

merci pour les réponses.

Malheureusement, la dernière idée (workbook.close false) ne change rien.
Quant à la macro proposée plus haut, mon ordinateur la refuse à plusieurs lignes :
Set fichierCsv = CreateObject("Scripting.FileSystemObject").OpenTextFile

ou fichierCsv.WriteLine ligneCsv

A+
 

Discussions similaires

Réponses
2
Affichages
327

Statistiques des forums

Discussions
312 611
Messages
2 090 219
Membres
104 452
dernier inscrit
hamzamounir