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

Export au format CSV

5 réponses
Avatar
olitoto
Bonjour à tous ( surtout aux amoureux),

J'ai créé un ptit fichier avec une seule ligne de remplie sur plusieurs
colonnes ( de type nom, prénom, date de naissance, etc.)

Je fait "fichier", "enregistrer sous" "format CSV ( séparateur point
virgule)" ----> Pas de pb mon fichier texte est créé, il a la forme :

"Durand;philippe;M;04101958;5C"

Si je demande une exportation avac une macro de type

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:=False

Il me crée un fichier comme ça :

"Durand,philippe,M,04101958,5C"

Je voudrais savoir quelqu'un sait quelle instruction mettre dans la
macro pour avoir des séparateurs point-virgule et non pas virgule.


Merci d'avance ,

Olivier

5 réponses

Avatar
Daniel
Bonjour.

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse, local:=true

Cordialement.
Daniel
"olitoto" a écrit dans le message de news:

Bonjour à tous ( surtout aux amoureux),

J'ai créé un ptit fichier avec une seule ligne de remplie sur plusieurs
colonnes ( de type nom, prénom, date de naissance, etc.)

Je fait "fichier", "enregistrer sous" "format CSV ( séparateur point
virgule)" ----> Pas de pb mon fichier texte est créé, il a la forme :

"Durand;philippe;M;04101958;5C"

Si je demande une exportation avac une macro de type

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse

Il me crée un fichier comme ça :

"Durand,philippe,M,04101958,5C"

Je voudrais savoir quelqu'un sait quelle instruction mettre dans la macro
pour avoir des séparateurs point-virgule et non pas virgule.


Merci d'avance ,

Olivier


Avatar
olitoto
Bonjour.

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse, local:=true

Cordialement.
Daniel
"olitoto" a écrit dans le message de news:


Bonjour à tous ( surtout aux amoureux),

J'ai créé un ptit fichier avec une seule ligne de remplie sur plusieurs
colonnes ( de type nom, prénom, date de naissance, etc.)

Je fait "fichier", "enregistrer sous" "format CSV ( séparateur point
virgule)" ----> Pas de pb mon fichier texte est créé, il a la forme :

"Durand;philippe;M;04101958;5C"

Si je demande une exportation avac une macro de type

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse

Il me crée un fichier comme ça :

"Durand,philippe,M,04101958,5C"

Je voudrais savoir quelqu'un sait quelle instruction mettre dans la macro
pour avoir des séparateurs point-virgule et non pas virgule.


Merci d'avance ,

Olivier




Ok, c'était ça, merci !


Olivier


Avatar
MichDenis
Seulement une précision, le paramètre : local:=true
est disponible à partir de la version Excel 2002. Si tu
utilises une version antérieure, tu auras droit à une erreur.

Si problème, il y a ceci pour enregistrer les données d'une feuille dans un fichier csv.


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

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

'Nom de la feuille à adapter
With ThisWorkbook.Worksheets("Feuil2")
R = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
C = .Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
Set Plage = .Range(.Range("A1"), Cells(R, C))
End With

Séparateur = ";" ' celui de ton choix
' Chemin et nom de fichier à adapter
NomFichierSauvegarde = "C:Denis.csv"

SaveAsCSV Plage, Séparateur, NomFichierSauvegarde

End Sub
'-----------------------------------
Sub SaveAsCSV(Plage As Range, Séparateur As String, _
NomFichierSauvegarde As String)

Dim Temp As String, R As Range, C As Range

Open NomFichierSauvegarde For Output As #1
For Each R In Plage.Rows
Temp = ""
For Each C In R.Cells
Temp = Temp & C & Séparateur
Next
Temp = Left(Temp, Len(Temp) - 3)
Print #1, Temp
Next
Close
Set Plage = Nothing: Set C = Nothing: Set R = Nothing
End Sub
'-----------------------------------




"Daniel" a écrit dans le message de news:
%
Bonjour.

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse, local:=true

Cordialement.
Daniel
"olitoto" a écrit dans le message de news:

Bonjour à tous ( surtout aux amoureux),

J'ai créé un ptit fichier avec une seule ligne de remplie sur plusieurs
colonnes ( de type nom, prénom, date de naissance, etc.)

Je fait "fichier", "enregistrer sous" "format CSV ( séparateur point
virgule)" ----> Pas de pb mon fichier texte est créé, il a la forme :

"Durand;philippe;M;04101958;5C"

Si je demande une exportation avac une macro de type

ActiveWorkbook.SaveAs Filename:= _
"toto.csv", _
FileFormat:=xlCSV, CreateBackup:úlse

Il me crée un fichier comme ça :

"Durand,philippe,M,04101958,5C"

Je voudrais savoir quelqu'un sait quelle instruction mettre dans la macro
pour avoir des séparateurs point-virgule et non pas virgule.


Merci d'avance ,

Olivier


Avatar
olitoto
Bonjour Michdenis

Dans le forum tu m'as envoyé deux procédures et je t'en remercie. J'ai
néanmoins quelques questions à te poser :

1 ) Si la première ligne de ma feuille est vierge, le fichier csv
commence par un suite de ;;;;;;; et je voudrais pouvoir l'éviter.

2 ) Pourquoi l'instruction "Temp = Left(Temp, Len(Temp) - 3)" dans la
fonction d'écriture du fichier ? . Par exemple, dans ton code
si la ligne 2 contient a b c d en cellule A2,b2,c2,d2 le fichier csv
devient : a;b;c; ...... et pas de D !

Merci de ta réponse

Olivier



voici ton code :

Sub EnregistrerFormatSpecial()

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

'Nom de la feuille à adapter
With ThisWorkbook.Worksheets("Feuil2")
R = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
C = .Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
Set Plage = .Range(.Range("A1"), Cells(R, C))
End With

Séparateur = ";" ' celui de ton choix
' Chemin et nom de fichier à adapter
NomFichierSauvegarde = "C:Denis.csv"

SaveAsCSV Plage, Séparateur, NomFichierSauvegarde

End Sub
'-----------------------------------
Sub SaveAsCSV(Plage As Range, Séparateur As String, _
NomFichierSauvegarde As String)

Dim Temp As String, R As Range, C As Range

Open NomFichierSauvegarde For Output As #1
For Each R In Plage.Rows
Temp = ""
For Each C In R.Cells
Temp = Temp & C & Séparateur
Next
Temp = Left(Temp, Len(Temp) - 3)
Print #1, Temp
Next
Close
Set Plage = Nothing: Set C = Nothing: Set R = Nothing
End Sub
Avatar
MichDenis
| 1 ) Si la première ligne de ma feuille est vierge, le fichier csv
| commence par un suite de ;;;;;;; et je voudrais pouvoir l'éviter.
*** C'est à toi de déterminer la plage de cellules que tu veux
enregistrer au format .CSV
Dans la procédure, adapte cette ligne de code :
Set Plage = .Range(.Range("A1"), Cells(R, C))
Par
Set Plage = .Range(.Range("A2"), Cells(R, C))

| 2 ) Pourquoi l'instruction "Temp = Left(Temp, Len(Temp) - 3)" dans la
| fonction d'écriture du fichier ? . Par exemple, dans ton code
| si la ligne 2 contient a b c d en cellule A2,b2,c2,d2 le fichier csv
| devient : a;b;c; ...... et pas de D !

Dans la procédure originelle, le séparateur d'arguments avait 3 caractères
Séparateur = ";" ' celui de ton choix
En fait, je l'ai modifié pour toi, et j'ai omis de modifier le 3 pour 1.
ce qui évite d'avoir à la fin de la chaîne un séparateur inutile tout simplement.



voici ton code :

Sub EnregistrerFormatSpecial()

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

'Nom de la feuille à adapter
With ThisWorkbook.Worksheets("Feuil2")
R = .Cells.Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
C = .Cells.Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
Set Plage = .Range(.Range("A1"), Cells(R, C))
End With

Séparateur = ";" ' celui de ton choix
' Chemin et nom de fichier à adapter
NomFichierSauvegarde = "C:Denis.csv"

SaveAsCSV Plage, Séparateur, NomFichierSauvegarde

End Sub
'-----------------------------------
Sub SaveAsCSV(Plage As Range, Séparateur As String, _
NomFichierSauvegarde As String)

Dim Temp As String, R As Range, C As Range

Open NomFichierSauvegarde For Output As #1
For Each R In Plage.Rows
Temp = ""
For Each C In R.Cells
Temp = Temp & C & Séparateur
Next
Temp = Left(Temp, Len(Temp) - 3)
Print #1, Temp
Next
Close
Set Plage = Nothing: Set C = Nothing: Set R = Nothing
End Sub