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
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.
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
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
%23PG5SiEUHHA.5012@TK2MSFTNGP04.phx.gbl...
Bonjour.
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.
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
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
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
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
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
| 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
| 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