Et par macro, tu peux enregistrer au format CSV avec virgule ou
point-virgule
la plage de ton choix en utilisant cette macro. Elle enlève aussi les
valeurs
d'erreur.
'-----------------------------------
Sub EnregistrerFormatSpecial()
Dim Plage As Range, Séparateur As String
Dim NomFichierSauvegarde As String
On Error Resume Next
With Worksheets("Feuil1") 'Nom feuille à déterminer
With .Range("A1:G25") 'Plage de cellules à définir
.SpecialCells(xlCellTypeFormulas, xlErrors) = ""
.SpecialCells(xlCellTypeConstants, xlErrors) = ""
Set Plage = .Cells
End With
End With
Séparateur = ";"
NomFichierSauvegarde = "C:MichD.csv"
Call 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
'-----------------------------------
Et par macro, tu peux enregistrer au format CSV avec virgule ou
point-virgule
la plage de ton choix en utilisant cette macro. Elle enlève aussi les
valeurs
d'erreur.
'-----------------------------------
Sub EnregistrerFormatSpecial()
Dim Plage As Range, Séparateur As String
Dim NomFichierSauvegarde As String
On Error Resume Next
With Worksheets("Feuil1") 'Nom feuille à déterminer
With .Range("A1:G25") 'Plage de cellules à définir
.SpecialCells(xlCellTypeFormulas, xlErrors) = ""
.SpecialCells(xlCellTypeConstants, xlErrors) = ""
Set Plage = .Cells
End With
End With
Séparateur = ";"
NomFichierSauvegarde = "C:MichD.csv"
Call 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
'-----------------------------------
Et par macro, tu peux enregistrer au format CSV avec virgule ou
point-virgule
la plage de ton choix en utilisant cette macro. Elle enlève aussi les
valeurs
d'erreur.
'-----------------------------------
Sub EnregistrerFormatSpecial()
Dim Plage As Range, Séparateur As String
Dim NomFichierSauvegarde As String
On Error Resume Next
With Worksheets("Feuil1") 'Nom feuille à déterminer
With .Range("A1:G25") 'Plage de cellules à définir
.SpecialCells(xlCellTypeFormulas, xlErrors) = ""
.SpecialCells(xlCellTypeConstants, xlErrors) = ""
Set Plage = .Cells
End With
End With
Séparateur = ";"
NomFichierSauvegarde = "C:MichD.csv"
Call 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
'-----------------------------------
| affreusement buggué VBA...
Non, c'est normal. Tu es dans une fenêtre VBA et dans cette fenêtre, le
code utilise par défaut les paramètres américains comme pour le
séparateur décimal, le format des dates...etc.
Si tu utilises la commande "enregistrer sous" du menu fichier et que tu
choisis comme type de fichier .Csv, tu auras le point-virgule comme
séparateur.
La macro proposée lorsque la plage n'est pas très grande permet de
choisir le séparateur d'éléments du futur fichier .csv.
| affreusement buggué VBA...
Non, c'est normal. Tu es dans une fenêtre VBA et dans cette fenêtre, le
code utilise par défaut les paramètres américains comme pour le
séparateur décimal, le format des dates...etc.
Si tu utilises la commande "enregistrer sous" du menu fichier et que tu
choisis comme type de fichier .Csv, tu auras le point-virgule comme
séparateur.
La macro proposée lorsque la plage n'est pas très grande permet de
choisir le séparateur d'éléments du futur fichier .csv.
| affreusement buggué VBA...
Non, c'est normal. Tu es dans une fenêtre VBA et dans cette fenêtre, le
code utilise par défaut les paramètres américains comme pour le
séparateur décimal, le format des dates...etc.
Si tu utilises la commande "enregistrer sous" du menu fichier et que tu
choisis comme type de fichier .Csv, tu auras le point-virgule comme
séparateur.
La macro proposée lorsque la plage n'est pas très grande permet de
choisir le séparateur d'éléments du futur fichier .csv.
'-----------------------------------
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
'-----------------------------------
'-----------------------------------
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
'-----------------------------------
'-----------------------------------
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
'-----------------------------------
Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Le 07/05/2014 16:46, MichD a écrit :Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Open et Write / Print semblent conçus pour travailler
en ASCII, ou avec la page de code de windows (latin1 = cp1252 = ISO8859-1 qui
correspond aux langues dites "occidentales").
Si une cellule contient par exemple : α β γ
Print va écrire des trucs illisibles dans le fichier,
alors que l'exportation en format délimité unicode
(.txt, colonnes séparées par des tabulations)
va écrire dans le fichier en suivant l'encodage
UTF-16 avec un BOM FFFE.
De sorte que la lecture du fichier dans un éditeur de texte
(c'est l'intérêt des formats csv/txt) donnera bien les
lettres α β γ (qui sont absentes de l'encodage latin1)
Grâce au BOM, l'importation du fichier par un autre programme
se passera bien aussi (fichier unicode en UTF-16-LE).
En utilisant Print, apparemment, on ne peut écrire dans le fichier
que de l'ASCII (proprement que de l'ASCII 128 et par extension du
latin1)
Cdt.
Le 07/05/2014 16:46, MichD a écrit :
Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Open et Write / Print semblent conçus pour travailler
en ASCII, ou avec la page de code de windows (latin1 = cp1252 = ISO8859-1 qui
correspond aux langues dites "occidentales").
Si une cellule contient par exemple : α β γ
Print va écrire des trucs illisibles dans le fichier,
alors que l'exportation en format délimité unicode
(.txt, colonnes séparées par des tabulations)
va écrire dans le fichier en suivant l'encodage
UTF-16 avec un BOM FFFE.
De sorte que la lecture du fichier dans un éditeur de texte
(c'est l'intérêt des formats csv/txt) donnera bien les
lettres α β γ (qui sont absentes de l'encodage latin1)
Grâce au BOM, l'importation du fichier par un autre programme
se passera bien aussi (fichier unicode en UTF-16-LE).
En utilisant Print, apparemment, on ne peut écrire dans le fichier
que de l'ASCII (proprement que de l'ASCII 128 et par extension du
latin1)
Cdt.
Le 07/05/2014 16:46, MichD a écrit :Pourrais-tu élaborer davantage, j'ai de la difficulté à saisir la
problématique!
Open et Write / Print semblent conçus pour travailler
en ASCII, ou avec la page de code de windows (latin1 = cp1252 = ISO8859-1 qui
correspond aux langues dites "occidentales").
Si une cellule contient par exemple : α β γ
Print va écrire des trucs illisibles dans le fichier,
alors que l'exportation en format délimité unicode
(.txt, colonnes séparées par des tabulations)
va écrire dans le fichier en suivant l'encodage
UTF-16 avec un BOM FFFE.
De sorte que la lecture du fichier dans un éditeur de texte
(c'est l'intérêt des formats csv/txt) donnera bien les
lettres α β γ (qui sont absentes de l'encodage latin1)
Grâce au BOM, l'importation du fichier par un autre programme
se passera bien aussi (fichier unicode en UTF-16-LE).
En utilisant Print, apparemment, on ne peut écrire dans le fichier
que de l'ASCII (proprement que de l'ASCII 128 et par extension du
latin1)
Cdt.