Conserver les zéros devant un nombre lors de l'export d'une feuille Excel en csv
Bonjour,
Je débute en VBA et je dois exporter une feuille Excel "Dossier_EUR" du fichier "ARCHIDOSS" dans un fichier CSV (qui sera importé dans une application).
Dans la colonne A de cette feuille Excel figurent des nombres sur 11 caractères dont certains commencent par "0" ou "00",..., cette colonne est bien au format texte. Or lorsque je crée mon fichier CSV ces 0 ne sont pas conservés.
La macro que j'utilise est la suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Sub Export_Dossier()
Dim fso As New FileSystemObject
Dim MonFichier As TextStream
DateA = Workbooks("ARCHIDOS.xlsm").Sheets("MENU").Cells(8, 5).Value
DateM = Workbooks("ARCHIDOS.xlsm").Sheets("MENU").Cells(8, 4).Value
Ref = Workbooks("ARCHIDOS.xlsm").Sheets("MENU").Cells(8, 3).Value
Set MonFichier = fso.CreateTextFile("R:\Dossier _" & DateA & "_" & DateM & "_" & Ref & ".csv")
i = 16
While Sheets("Dossier_EUR").Cells(i, 2).Value <> ""
MonFichier.WriteLine Sheets("Dossier_EUR").Cells(i, 2).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 3).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 4).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 5).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 6).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 7).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 8).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 9).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 10).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 11).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 12).Value & _
(";") & Sheets("Dossier_EUR").Cells(i, 13).Value
i = i + 1
Wend
MonFichier.Close
End Sub |
J'ai essayé de rajouter ce bout de macro après le "Wend":
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim xCell As Range
Dim Plage As Range
Dim x As String
Dim y As Byte
Dim z As String
Set Plage = Range("A2:A" & Cells(Rows.Count, "a").End(xlUp).Row)
Plage.NumberFormat = "@"
For Each xCell In Plage
If Len(xCell.Value) < 11 Then
x = xCell.Value
y = 11 - Len(xCell.Value)
z = Application.WorksheetFunction.Rept("0", y)
xCell.Value = z & x
End If
Next xCell |
Mais cela ne fonctionne pas.
Pourriez-vous m'aider s'il vous plait ?
Merci.