VBA pour enregistrer la feuille de calcul dans un fichier CSV

salutations ,

J'ai une feuille de calcul excel avec le nom "ACABAMENTO" qui est jointe au archiver xlsm .

Je dois copier les données de cette feuille de calcul et enregistrer ces données dans un fichier CSV séparé par des points-virgules .

Je dois enregistrer ce fichier CSV dans un répertoire de mon choix, comme ceci: "C:\Users\Junior\Documents\ ..."

J'ai trouvé un exemple dans ce sujet ici .

mais le problème est que la macro de cet exemple n'enregistre pas le fichier CSV avec un séparateur "point-virgule" .

Je dois enregistrer le fichier CSV avec un séparateur "point-virgule", en raison d'un logiciel qui récupérera plus tard ces valeurs .

J'ai joint un fichier CSV auquel je veux accéder, il a été généré avec un séparateur par "virgule", mais le séparateur doit être avec "point-virgule" .

merci d'avance pour toute votre aide .

37archiver-csv.csv (1.56 Ko)
30archiver-xlsm.xlsm (11.18 Ko)

Bonjour,

cela peut dépendre de tes paramètres locaux

essaie ceci

ActiveSheet.SaveAs ThisWorkbook.Path & "\" & "testfichiercsv" & ".csv", FileFormat:=xlCSV, local:=True

Bonjour Steelson ,

essaie ceci

ActiveSheet.SaveAs ThisWorkbook.Path & "\" & "testfichiercsv" & ".csv", FileFormat:=xlCSV, local:=True

désolé pour ma question, mais je n'ai pas bien compris vos conseils, pourriez-vous s'il vous plaît insérer votre idée dans mon fichier xlsm et la joindre .

j'ai aussi trouvé une autre idée dans ce sujet ici , mais cela n'a pas fonctionné car il y avait une Erreur dans la définition de la suivant variable:

Dim PP As New DataObject

je vous remercie beaucoup pour votre aide .

1ère solution

Sub export2csv()
    chemin = "C:\Users\Junior\Documents\"
    'chemin = ThisWorkbook.Path & "\"
    ActiveSheet.SaveAs chemin & ActiveSheet.Name & "_" & Format(Date, "yyyy-mm-dd") & ".csv", FileFormat:=xlCSV, local:=True
    ThisWorkbook.Close savechanges:=False
End Sub
32archiver-xlsm.xlsm (16.35 Ko)

2ème solution

activer la référence "Microsoft Forms 2.0 Object Library."

Sub FichierCSV()

    'activer la référence "Microsoft Forms 2.0 Object Library." ou ajouter un formulaire (la référence sera automatiquement ajoutée)
    Dim PP As DataObject
    Set PP = New DataObject

    Dim Plage As Range
    Dim Dossier As String
    Dim Fichier As String
    Dim Texte As String

    Dossier = "C:\Users\Junior\Documents\"
    'Dossier = ThisWorkbook.Path & "\"
    Fichier = ActiveSheet.Name & "_" & Format(Date, "yyyy-mm-dd") & ".csv"

    'défini la plage sur toute la feuille
    ActiveSheet.UsedRange.Copy

    With PP
        .GetFromClipboard
        Texte = .GetText(1)
    End With

    Texte = Replace(Texte, vbTab, ";")

    'création du fichier .csv
    Open Dossier & Fichier For Binary Access Write As #1: Put #1, , Texte: Close #1

End Sub
16archiver-xlsm.xlsm (19.11 Ko)

1ère solution

Cela n'a pas fonctionné car je souhaite exporter les données, si vous téléchargez mon fichier CSV au début de cette rubrique, vous verrez comment je souhaite organiser les données, vous remarquerez que les données doivent toutes rester dans la colonne A.

le problème est que dans mon fichier CSV le séparateur est une virgule, j'ai besoin que le séparateur soit un point-virgule, tout cela grâce au logiciel qui récupérera ensuite ces valeurs de la colonne A avec le séparateur par des points-virgules.

en bref, je dois changer le séparateur dans mon fichier CSV que j'ai joint au début de cette rubrique .

détail: les nombres décimaux ne peuvent pas être modifiés .

Si la première ne fonctionne pas, c'est que tes paramètres locaux sont différents des miens comme je l'avais mentionné.

Chez moi j'ai bien un csv avec des séparateurs ;

capture d ecran 647

Essaie la seconde solution.

2ème solution

maintenant l'erreur dans la définition de la variable ne s'est plus produite, la macro a pu exécuter son activité .

mais j'ai toujours le même problème mentionné dans ma réponse à la 1ère solution .

toutes les données doivent rester dans la colonne A, mais avec un séparateur point-virgule .

2ème solution chez moi

capture d ecran 648

Par contre, je n'ai pas regardé les points et virgules des nombres, là aussi cela dépend des paramètres régionaux !

toutes les données doivent rester dans la colonne A, mais avec un séparateur point-virgule .

Hé bien si tu lis le fichier avec excel, ce dernier et séparera TOUJOURS les données en différentes colonnes !

Lis ton fichier avec un traitement de texte, c'est cela qui compte quand tu vas l'injecter dans le logiciel.

édit : voir complément page suivante

Lis le fichier obtenu avec ceci pour shunter la mise en colonne d'excel

Tout est dans A

Lis le fichier obtenu avec ceci pour shunter la mise en colonne d'excel

Tout est dans A

Oui c'est vrai, c'est le format que je souhaite atteindre, mais dans ce cas, je devrai importer les données une fois qu'elles auront déjà été exportées .

ce serait génial si je pouvais exporter les données avec le idéal format point-virgule .

J'ai joint le fichier qui génère ici pour moi votre 2ème solution, les données sont divisées en colonnes, J'ai également joint l'image de mes références .

image

J'ai joint le fichier qui génère ici pour moi votre 2ème solution, les données sont divisées en colonnes,

Comment peux-tu dire que les données sont divisées en colonnes ?

Un fichier csv est un fichier texte sans colonne !

C'est parce que tu le lances et que c'est excel qui le lit, ... sauf que excel l’interprète et le divise ensuite en colonnes pour affichage.

Ton fichier n'a aucune colonne

capture d ecran 649

Merci beaucoup pour l'explication que vous avez faite, je vais utiliser votre fichier "lecture csv 1 colonne.xlsm" pour faire la lecture, car cela fonctionne ici pour moi, plus tard je ferai des tests dans les versions d'excel pour vos autres solutions .

Je tiens à vous remercier d'avoir pris le temps de m'aider dans cette affaire, vous présentez toujours d'excellentes solutions qui permettent une bonne compréhension.

un gros câlin.

Rechercher des sujets similaires à "vba enregistrer feuille calcul fichier csv"