Exportation fichier en csv

Bonjour à tous,

J'ai une macro qui me permets d'exporter en format csv mes prévisions pour la trésorerie, (en pj nommé "import-prévision-13-01-2022-avec-macro"). Mais cela me donne un résultat différent de lorsque je fais un copier/coller et j'enregistre sous mon fichier en format csv (en pj , import-prévision-13-01-2022-sans-macro")

Je voulais savoir si il été possible d'avoir le même résultat avec une macro que ce que je fais manuellement car aujourd'hui l'intégrateur de mon logiciel de trésorerie n'accepte que le format csv que je fais manuellement.

voici le code qui me permets d'avoir mon fichier sous format csv:

Filename:="Z:\TRESORERIE\B - IMPORT AUTOMATISE\" & Annee & "\" & date_fichier & "\Import prévision - " & date_aujourdhui, _
FileFormat:=xlCSVMSDOS, CreateBackup:=False
Application.Run "ExtXllUsage"

Si vous pouviez m'aider pour ce soucis...

Merci de votre aide,

Bonne journée

Bonjour Assurances.T,

Pour connaître la différence entre les 2 fichiers csv, il suffit de remplacer l'extension .csv par .txt : les 2 fichiers s'ouvrent avec le bloc-notes. On peut ainsi voir les différences :

- dans le fichier csv avec macro, les cellules exportées sont séparées par des virgules ","

- dans le fichier csv sans macro, les cellules exportées sont séparées par des points-virgules ";"

Le logiciel de trésorerie n'accepte probablement que des csv avec des points-virgules comme séparateur.

Une idée est de remplacer FileFormat:=xlCSVMSDOS par FileFormat:=xlCSV, et de rajouter après CreateBackup:=False, Local:=True

Bonjour Assurances et

bonjour AntoineDL bonne remarque sur le csv (point virgule)

Bonsoir à tous les deux,

Merci pour vos réponses, j'ai donc essayé la méthode d'antoine:

ActiveWorkbook.SaveAs _
Filename:="Z:\TRESORERIE\B - IMPORT AUTOMATISE\" & Annee & "\" & date_fichier & "\Import prévision - " & date_aujourdhui, _
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    Application.Run "ExtXllUsage"
et cela m'a généré le fichier que vous voyez en pièce jointe,

et avec ta méthode de convertir le fichier en txt, je me retrouve avec ça:

image

j'ai donc le problème qui persiste et je ne comprends pas trop pourquoi...

Et si je le fais manuellement j'ai ça:

image

Quelqu'un aurait une explication ?

Bonne soirée et bon week-end :)

Re-,

Il semblerait que cela soit les paramètres régionaux Windows qui modifient l'export en csv car la macro semble ok. On observe notamment sur la première image que le 13 janvier 2022 est exporté comme ceci 1/13/2022 (format anglosaxon : mois/jour/année) alors que sur la 2ème image, la date est bien 13/01/2022 (jour/mois/année).

Chez les anglosaxons, la virgule est le séparateur par défaut également.

Bonjour Antoine,

J'avais regarder ce problème et mon ordinateur était bien configurer.

J'ai finalement trouver le problème, il se trouve dans le code suivant:

ActiveWorkbook.SaveAs _
Filename:="Z:\TRESORERIE\B - IMPORT AUTOMATISE\" & Annee & "\" & date_fichier & "\Import prévision - " & date_aujourdhui, _
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True
    Application.Run "ExtXllUsage"

Nom_nouveau_fichier2 = ActiveWorkbook.Name
Workbooks(Nom_nouveau_fichier2).Close SaveChanges:=True

apparemment lorsque que l'on enregistre via la dernière ligne de code (Savechanges), il remet par défaut le Local:=False.

J'ai réglé le problème en convertissant mon fichier de base en csv au dernier moment, comme ça il prenait en compte les éléments apportées dans le fichier avec le format qui va bien.

Cependant j'ai un autre problème qui survient, c'est lorsque j'essaye d'ouvrir un fichier existant via le code suivant:

Fichier = "Z:\TRESORERIE\B - IMPORT AUTOMATISE\" & Annee & "\" & date_fichier & "\Import prévision - " & date_aujourdhui & ".csv"
Workbooks.Open Filename:=Fichier
Nom_nouveau_fichier = ActiveWorkbook.Name

il vient à nouveau me changer le format

le format que je souhaite quand il ouvre mon fichier (en pj également)

image

Le format que j'ai via mon code vba:

et malheuresement mon logiciel de trésorerie n'accepte que le format ci dessus, je me demandais si il existait pas quand j'ouvre le fichier un équivalent de de Local:=true pck lorsque j'ouvre mon fichier manuellement j'ai le bon format...

image

Merci et bon week-end :)

Bonjour Assurance.T,

C'est étrange. Mais pourquoi rouvrir le fichier csv une fois généré ? Le csv ne devrait servir que de fichier intermédiaire entre les données générées à partir d'Excel et le logiciel de trésorerie.

Une autre idée serait de générer un fichier texte (.txt) encapsulé dans un csv. Peut-être est-ce la solution.
Il faudra remplacer cela :

ActiveWorkbook.SaveAs _
Filename:="Z:\TRESORERIE\B - IMPORT AUTOMATISE\" & Annee & "\" & date_fichier & "\Import prévision - " & date_aujourdhui, _
        FileFormat:=xlCSV, CreateBackup:=False, Local:=True

par :

Sub GenerationFichier()
    Const DELIMITER = ";"
    Dim Row As Long
    Dim Column As Integer
    Dim FileNum As Integer
    FileNum = FreeFile
    myFile = ActiveWorkbook.Path & "\"
    Set Rng = ActiveSheet.Range("A1").CurrentRegion
    Open FichierCheminEnCours & "Exemple " & Format(Date, "ddmmyyyy") & ".csv" For Append As #FileNum '.csv ou .txt au choix de l'utilisateur
    For Row = 1 To Rng.Rows.Count
        For Column = 1 To Rng.Columns.Count
            If Column < Rng.Columns.Count Then
                Print #FileNum, ActiveSheet.Cells(Row, Column).Value & DELIMITER;
            Else
                Print #FileNum, ActiveSheet.Cells(Row, Column).Value&;
            End If
        Next
        Print #FileNum,
    Next
    Close #FileNum
End Sub

(sans le sub du début et le end sub de la fin)

Le fichier csv de la macro ci-dessus sera dénommé "Exemple jjmmaaa.csv" et enregistré dans le même répertoire que le fichier Excel source (à adapter ensuite dans la macro).
Il s'ouvre ensuite parfaitement sur Excel.

Hello,

j'avais besoin d'ouvrir et de fermer ce fichier csv car je viens l'alimenter de mes prévisions au fur et à mesure de la journée avant de l'importer dans mon logiciel de trésorerie.

J'ai finalement réussi à trouver le petit bout de code qui me permets de résoudre mon problème qui est le suivant:

Workbooks.OpenText Filename:=Fichier, DataType:=1, Semicolon:=True, local:=True

Si cela peut en aider certaines...

Merci à tous,

Bonne journée !

Rechercher des sujets similaires à "exportation fichier csv"