Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion chevet34
  • 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 !

C

chevet34

Guest
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

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

++
 
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
 
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+
 
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:
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

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.
++
 
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+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 CSV en EXCEL
Réponses
1
Affichages
195
Réponses
3
Affichages
878
N
Réponses
1
Affichages
698
Réponses
20
Affichages
4 K
C
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…