Conversion en CSV avec tabulation et non des virgules

Bonjour, suite à un poste hier, j'ai pu sauvegarder un sheet dans un dossier en CSV via macro grâce à Xmenpl,

Mais voilà mon nouveau problème,
J'aimerai que mes séparateurs soient des tabulations et non des virgules, mais je ne sais pas comment faire, j'ai beau chercher sur internet soit je ne comprends pas vraiment comment ils font soit il n'y a rien,
Voici mon code qui permet de sauvegarder

Sub Save()
Dim str As String, strFullname As String, name As String

'Implémentation de variables permettant de donner le nom du chemin en question
name = InputBox("Comment voulez vous nommer votre dossier ?", "Mise en place du nom")

str = "I:\ERP\Projet ABAS\ABAS - VTI\TEST NOMENCLATURE\EXEMPLES\"
strFullname = str & name & ".csv"
MsgBox strFullname

'Fonction permettant de sauvegarder en .CSV le sheet "RDD"

Worksheets("RDD").Copy
Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:=strFullname, FileFormat:=xlCSVUTF8
ActiveWorkbook.Close
Application.DisplayAlerts = True

End Sub

Merci d'avance pour le temps que vous m'accorderez,
Bien cordialement.

bonjour,

Utilise cette macro :

Sub ExportCSV()
Dim Plage As Object, oL As Object, oC As Object, FileN$, Sep$, Tmp$
FileN = "MonBoC>SV"
    Sep = vbTab
        With Worksheets(Choix)
            Set Plage = .Range("A1:F5")
        End With
    Open FileN & ".csv" For Output As #1
    For Each oL In Plage.Rows
        Tmp = ""
        For Each oC In oL.Cells
            Tmp = Tmp & CStr(oC.Text) & Sep
        Next
        Print #1, Tmp
    Next
    Close
End Sub

A+

Merci pour cette réponse,
Je ne comprends pas grand chose je l'avoue,
Comment choisir le dossier de destination + le nom du fichier ?
De plus, j'imagine qu'il faut que je change des choses dans le code tel que "Choix" ?

Il faut juste changer le nom (et chemin) du fichier dans choix

"D:\Documents\_EXC\MonBoFichier"

Si tu ne précises que le nom c'est dans ton répertoire actuel que ce sera créé.

A+

D'accord, donc imaginons j'ai choisi mon chemin, le code suivant serait bon ?

Sub ExportCSV()
Dim Plage As Object, oL As Object, oC As Object, FileN$, Sep$, Tmp$
FileN = "MonBoC>SV"
    Sep = vbTab
        With Worksheets("I:\ERP\Projet ABAS\ABAS - VTI\TEST NOMENCLATURE\EXEMPLES\test")
            Set Plage = .Range("A1:F5")
        End With
    Open FileN & ".csv" For Output As #1
    For Each oL In Plage.Rows
        Tmp = ""
        For Each oC In oL.Cells
            Tmp = Tmp & CStr(oC.Text) & Sep
        Next
        Print #1, Tmp
    Next
    Close
End Sub

N'y a-t-il rien d'autre que je dois modifier hormis la plage que je dois mettre en fonction de mes besoins ?

Après certains test, je reviens avec ce code :

Sub ExportCSV()
Dim Plage As Object, oL As Object, oC As Object, FileN$, Sep$, Tmp$
FileN = "I:\ERP\Projet ABAS\ABAS - VTI\TEST NOMENCLATURE\EXEMPLES\test"
    Sep = vbTab
        With Worksheets("RDD")
            Set Plage = .Range("A1:F5")
        End With
    Open FileN & ".csv" For Output As #1
    For Each oL In Plage.Rows
        Tmp = ""
        For Each oC In oL.Cells
            Tmp = Tmp & CStr(oC.Text) & Sep
        Next
        Print #1, Tmp
    Next
    Close
End Sub

Par contre, le résultat que j'obtiens est le suivant :

image

N'est-il pas possible d'avoir une donnée dans chaque case comme si c'était une base de donnée avec un modèle MCD ?

Je n'arrive toujours pas à mettre une unique donnée pour une unique cellule
Voici ce que j'aimerai avoir de manière automatique :

image

Voici ce que j'ai :

image

Avec donc dans une seule cellule :

image

Désolé, je ne suis pas tapi en permanence derrière mon écran...

Si tu veux l'importer sous cette forme il faut l'ouvrir avec

Donnes > Nouvelle requête > A partir d'un fichier > Fichier CSV et suivre la boite de dialogue...

A+

Ne t'inquiète pas je ne suis pas pressé, juste je notifie mon avancé pour pas que tu répondes à un message que j'ai déjà résolu.

Sinon, je ne veux pas l'importer mais bel et bien l'exporter avec une tabulation pour chaque donnée

Re bonjour, Dans ce cas pourquoi vouloir réouvrir aprés l'export votre csv avec Excel ? Si vous voulez vérifier le résultat ( données en colonnes )

c'est avec le bloc note que votre csv final s'ouvre ; ou avec le logiciel pour qui il est destiné.

Bonjour,

je te propose ma solution!

Sub test()
    For I = 1 To Sheets.Count
       Exporter Sheets(I), "C:\Myrep"
    Next
End Sub
Sub Exporter(Onglet As Worksheet, Rep As String)
If Right(tep, 1) <> "\" Then Rep = Rep & "\"
Onglet.UsedRange.Copy
EcrireFichier Rep & Onglet.Name & ".CSV", PressePapier
End Sub
Function EcrireFichier(Fichier, TXT, Optional Append As Boolean)
Dim FSO, NewFichier
Set FSO = CreateObject("Scripting.FileSystemObject")
Set NewFichier = FSO.OpenTextFile(Fichier, Array(2, 8)(Abs(Append)), True)
NewFichier.Write TXT
NewFichier.Close
Set NewFichier = Nothing
Set FSO = Nothing
End Function

Public Property Let PressePapier(valeur)
With CreateObject("htmlfile").parentwindow.clipboardData.setData("Text", valeur): End With
End Property

Public Property Get PressePapier()
PressePapier = CreateObject("htmlfile").parentwindow.clipboardData.GetData("TEXT")
End Property

Bonjour Xmenpl,
Je ne veux pas forcément le réouvrir après l'export, c'est juste que je veux vérifier que tout est bien fait à l'intérieur, une fois vérifié je ne l'ouvrirai plus.
En fait ce CSV je l'injecte ensuite dans un ERP afin de commencer la mise en production du produit, j'ai donc besoin qu'il soit bien séparé case par case pour éviter les erreurs.

Bonjour dysorthographie,
Le code est techniquement bon, mais il fait pareil que mon code, les tabulations se font au sein d'une cellule au lieu de se séparer cellule par cellule
De plus il sauvegarde tout le workbook alors que j'ai besoin seulement de sauvegarder un sheet. (mais ça ce n'est pas un problème)

Amicalement,

Bonjour je reviens vers vous pour vous dire qu'après quelques tests, j'ai trouvé que :

'Sep = vbTab
Sep = ";"

J'ai tenté de mettre comme séparation des points virgules pour voir ce que cela faisait et voici le résultat,

image

Merci pour le temps que vous m'avez consacré,
Je mets tout de même la réponse de galopin01 en résolution.

Bonne journée à vous tous,
Cordialement

Bonjour,

Tu as demandé que les séparations soient des tabulation, donc j'exporte avec des tabulation !

Si tu ouvre avec un truc comme notepad++ tu verras les tabulations !

En revanche avec Excel j'imagine qu'il faut lui préciser le type de séparateur qui est pour EXCEL,par défaut,le point virgule !

Oui tu as raison, je me suis mal exprimé
Je suis assez débutant sur VBA je code depuis seulement 3 semaines dessus donc je ne connais pas ce genre de chose

Merci pour ton temps en tout cas !

Lol on en revient au csv à point virgule d'origine dans votre premier topic ?

https://forum.excel-pratique.com/excel/conversion-d-un-sheet-excel-en-csv-vers-un-dossier-pre-choisi...

Lol on en revient au csv à point virgule d'origine dans votre premier topic ?

https://forum.excel-pratique.com/excel/conversion-d-un-sheet-excel-en-csv-vers-un-dossier-pre-choisi-167131

Je ne suis pas sûr que ce genre de message est vraiment utile dans un topic clos avec réponse, je pense que vous auriez pu vous retenir "lol".

De plus, non car avec ce code il y avait tout dans une seule cellule. (j'ai Excel en français qui utilise des "," de base et non des ";" )
Étant débutant dans le vba (pas comme vous je l'ai bien compris ça), je ne connaissais pas la différence entre une virgule (présent dans mon premier topic), un point virgule ou une tabulation.

Je pensais que la tabulation aurait permis l'espacement des données cellule par cellule comme en SQL avec le modèle conceptuel des données. (Aussi, mon cheminement de pensée était : lorsqu'on fait TAB sur Excel on change de cellule, alors j'avais besoin d'espacement par tabulations)

Merci pour votre temps en tout cas, j'espère que vous arrêterez avec ce genre de remarques désobligeantes.

no comment.
Rechercher des sujets similaires à "conversion csv tabulation virgules"