Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Excel 2007] Export CSV

2 réponses
Avatar
JeAn-PhI
bonjour

j' ai créé un classeur excel ne contenant qu'une seule feuille.
j'ai rempli cette feuille, elle contient 4 colonnes
dans une de ces colonne j'ai un texte qui peut contenir des " (exemple :
mon texte avec des "guillemets")
jusque là tout est ok sauf que lors de l'export je me retrouve avec les
guillemets en double
avant : mon texte avec des "guillemets" (*.xlsx)
après : mon texte avec des ""guillemets"" (*.csv)

est ce qu'il y a un moyen pour qu'il m'exporte les données comme elles
sont sans transformation ?

--
Cordialement JeAn-PhI

2 réponses

Avatar
michdenis
Bonjour,

Tu peux utiliser ceci en prenant soin de définir
les variables selon ton application.

Tu colles ce qui suit dans un module standard de ton classeur:

'------------------------------------
Sub EnregistrerFormatSpecial()

Dim Plage As Range, Séparateur As String
Dim NomFichierSauvegarde As String
Dim R As Long, C As Integer

With ThisWorkbook.Worksheets("Feuil1") ' à déterminer
R = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
C = .Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
Range("A1") = .Range(.Range("A1"), .Cells(R, C)).Cells.Count
Plg = .Range(.Range("A1"), .Cells(R, C))
End With

Séparateur = ";" ' à déterminer
NomFichierSauvegarde = "C:Denis100.csv" ' à déterminer
SaveAsCSV Plg, Séparateur, NomFichierSauvegarde

End Sub

'------------------------------------
Sub SaveAsCSV(Plg As Variant, Séparateur As String, _
NomFichierSauvegarde As String)

Dim Temp As String
Close #1
Open NomFichierSauvegarde For Output As #1
For a = 1 To UBound(Plg, 1)
Temp = ""
For b = 1 To UBound(Plg, 2)
Temp = Temp & Plg(a, b) & Séparateur
Next
Temp = Left(Temp, Len(Temp) - Len(Séparateur))
Print #1, Temp
Next
Close
End Sub
'------------------------------------




"JeAn-PhI" a écrit dans le message de groupe de discussion :

bonjour

j' ai créé un classeur excel ne contenant qu'une seule feuille.
j'ai rempli cette feuille, elle contient 4 colonnes
dans une de ces colonne j'ai un texte qui peut contenir des " (exemple :
mon texte avec des "guillemets")
jusque là tout est ok sauf que lors de l'export je me retrouve avec les
guillemets en double
avant : mon texte avec des "guillemets" (*.xlsx)
après : mon texte avec des ""guillemets"" (*.csv)

est ce qu'il y a un moyen pour qu'il m'exporte les données comme elles
sont sans transformation ?

--
Cordialement JeAn-PhI
Avatar
JeAn-PhI
Dans son message précédent, michdenis a écrit :
Bonjour,

Tu peux utiliser ceci en prenant soin de définir
les variables selon ton application.

Tu colles ce qui suit dans un module standard de ton classeur:

'------------------------------------
Sub EnregistrerFormatSpecial()

Dim Plage As Range, Séparateur As String
Dim NomFichierSauvegarde As String
Dim R As Long, C As Integer

With ThisWorkbook.Worksheets("Feuil1") ' à déterminer
R = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
C = .Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
Range("A1") = .Range(.Range("A1"), .Cells(R, C)).Cells.Count
Plg = .Range(.Range("A1"), .Cells(R, C))
End With

Séparateur = ";" ' à déterminer
NomFichierSauvegarde = "C:Denis100.csv" ' à déterminer
SaveAsCSV Plg, Séparateur, NomFichierSauvegarde

End Sub

'------------------------------------
Sub SaveAsCSV(Plg As Variant, Séparateur As String, _
NomFichierSauvegarde As String)

Dim Temp As String
Close #1
Open NomFichierSauvegarde For Output As #1
For a = 1 To UBound(Plg, 1)
Temp = ""
For b = 1 To UBound(Plg, 2)
Temp = Temp & Plg(a, b) & Séparateur
Next
Temp = Left(Temp, Len(Temp) - Len(Séparateur))
Print #1, Temp
Next
Close
End Sub
'------------------------------------



merci cela fonctionne correctement pour mon besoin

--
Cordialement JeAn-PhI