Séparateur décimale à l'enregistrement d'un CSV
Bonjour à vous,
J'ai créer un fichier qui créer un fichier CSV qui s'enregistre automatiquement avec des données initiales. En colonne B,C & D j'ai des chiffres avec ou sans décimales. Le séparateur actuel est la virgule, j'aimerai qu'à l'enregistrement, ces 3 colonnes modifient le séparateur par un point.
J'ai essayé .replace mais ça ne fait rien lorsqu'on ouvre le fichier enregistré... je me suis sûrement gourré
Je vous laisse mon code ci-dessous (dsl il est un peu long)
Sub Fiche_relance()
Dim cel As Range
Dim LigBateauUrg As Integer
Dim ShFr As Worksheet, WshCSV As Worksheet, WshCSV2 As Worksheet
Dim i As Byte, j As Byte, k As Byte, sh As Byte, LgnCSV As Long
Dim ref As String, Chemin As String
Chemin = "\\(Y)\donnees\INFORMATIQUE\Programme_Cn\Roverb2243-serveur\BNEST Liste CSV Exporté\RELANCE - REBUS"
Call Trier
Application.ScreenUpdating = False
Set WshCSV = Feuil5
Set ShFr = Worksheets("Fiche_relance")
k = 1
For sh = 1 To Sheets.Count
If Left(Sheets(sh).Name, 8) = "FR" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") Then k = k + 1
Next sh
With Worksheets("BDD")
For Each cel In .ListObjects("T_Bdd").ListColumns(19).DataBodyRange
Select Case cel.Value
Case Is = "": Exit For
Case Is = "Oui"
If cel.Interior.ColorIndex <> 3 Then
ref = ShFr.Cells(3, 3) & ShFr.Cells(4, 3) & ShFr.Cells(3, 6)
If cel.Value = "Oui" And cel.Offset(0, -9) & cel.Offset(0, -8) & cel.Offset(0, -13) <> ref Or ref = "" Then
ThisWorkbook.Sheets("Fiche_relance").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
Set ShFr = ActiveSheet
ShFr.Name = "FR" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "_" & k
k = k + 1
i = 3
j = 7
ShFr.Cells(3, i) = cel.Offset(0, -9) 'Materiau (3= ligne3, -9=bdd par rapport à "Oui")
ShFr.Cells(4, i) = cel.Offset(0, -8) 'Epaisseur
ShFr.Cells(3, i + 3) = cel.Offset(0, -13) 'Coloris
ShFr.Cells(4, i + 3) = Now 'Date
ShFr.Cells(4, i + 5) = cel.Offset(0, -15) 'type bateau
ShFr.Range("A" & j) = cel.Offset(0, -16) 'Bateau
ShFr.Range("B" & j) = cel.Offset(0, -12) 'Meuble
ShFr.Range("C" & j) = cel.Offset(0, -11) 'Identification
ShFr.Range("D" & j) = cel.Offset(0, -7) 'Long
ShFr.Range("E" & j) = cel.Offset(0, -6) 'Larg
ShFr.Range("F" & j) = cel.Offset(0, -10) 'qte
ShFr.Range("G" & j) = cel.Offset(0, -4) 'détail flux
ShFr.Range("H" & j) = cel.Offset(0, -3) 'Motif relance
ShFr.Range("I" & j) = cel.Offset(0, -1) 'Commentaire
ShFr.Range("J" & j) = cel.Offset(0, 10) 'Repère
ElseIf ShFr.Cells(3, i) <> "" And ShFr.Cells(3, i) = cel.Offset(0, -9) And _
ShFr.Cells(4, i) = cel.Offset(0, -8) And ShFr.Cells(3, i + 3) = cel.Offset(0, -13) Then
j = j + 1
ShFr.Range("A" & j) = cel.Offset(0, -16) 'Bateau
ShFr.Range("B" & j) = cel.Offset(0, -12) 'Meuble
ShFr.Range("C" & j) = cel.Offset(0, -11) 'Identification
ShFr.Range("D" & j) = cel.Offset(0, -7) 'Long
ShFr.Range("E" & j) = cel.Offset(0, -6) 'Larg
ShFr.Range("F" & j) = cel.Offset(0, -10) 'qte
ShFr.Range("G" & j) = cel.Offset(0, -4) 'détail flux
ShFr.Range("H" & j) = cel.Offset(0, -3) 'Motif relance
ShFr.Range("I" & j) = cel.Offset(0, -1) 'Commentaire
ShFr.Range("J" & j) = cel.Offset(0, 10) 'Repère
End If
cel.Interior.ColorIndex = 3 'ajout couleur rouge
Call Recherche(ShFr, i) 'recherche bateau urgent
'Constitution du fichier CSV
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
If WshCSV2 Is Nothing Then
'La 1ère fois on crée la feuille
WshCSV.Copy 'Copie la feuille CSV dans un nouveau classe
Set WshCSV2 = ActiveSheet
WshCSV2.Name = "REBUS_CA40" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "_" & Format(Time, "hhmmss")
LgnCSV = 1
End If
'Remplissage de la ligne LgnCSV
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
LgnCSV = LgnCSV + 1
WshCSV2.Range("A" & LgnCSV) = cel.Offset(0, -11) 'Design
WshCSV2.Range("B" & LgnCSV) = cel.Offset(0, -7) 'long
WshCSV2.Range("C" & LgnCSV) = cel.Offset(0, -6) 'larg
WshCSV2.Range("D" & LgnCSV) = cel.Offset(0, -8) 'ep
WshCSV2.Range("E" & LgnCSV) = cel.Offset(0, -9) 'matière
WshCSV2.Range("F" & LgnCSV) = cel.Offset(0, 5) 'sdf
WshCSV2.Range("G" & LgnCSV) = cel.Offset(0, -4) 'commentaire
WshCSV2.Range("H" & LgnCSV) = cel.Offset(0, 6) 'chant1
WshCSV2.Range("I" & LgnCSV) = cel.Offset(0, 7) 'Chant2
WshCSV2.Range("J" & LgnCSV) = cel.Offset(0, 8) 'Chant3
WshCSV2.Range("K" & LgnCSV) = cel.Offset(0, 9) 'chant4
WshCSV2.Range("L" & LgnCSV) = cel.Offset(0, -12) 'Meuble
WshCSV2.Range("M" & LgnCSV) = cel.Offset(0, 10) 'repère
WshCSV2.Range("N" & LgnCSV) = cel.Offset(0, 4) 'Option
WshCSV2.Range("O" & LgnCSV) = cel.Offset(0, -15) 'modèle bateau
WshCSV2.Range("P" & LgnCSV) = cel.Offset(0, -16) 'num bateau
WshCSV2.Range("Q" & LgnCSV) = cel.Offset(0, -10) 'Qté
WshCSV2.Range("R" & LgnCSV) = cel.Offset(0, 11) 'Nom_Ensemble
WshCSV2.Range("S" & LgnCSV) = cel.Offset(0, 12) 'Chemin
'¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
End If
End Select
'ref = ""
Next cel
.Range("T_BDD").Sort Key1:=.Range("T_BDD[Date]"), Header:=xlYes, Order1:=xlAscending 'tri pour remettre BDD par date
End With
'Sauvegarde du fichier CSV s'il existe
If Not WshCSV2 Is Nothing Then
WshCSV2.SaveAs Chemin & "\" & WshCSV2.Name & ".csv", xlCSV, local:=True
Workbooks(WshCSV2.Name & ".csv").Close
MsgBox "CSV enregistré avec le fichier \RELANCE - REBUS"
Else
MsgBox "Aucun fichier CSV enregistré"
End If
Application.ScreenUpdating = True
End SubSub CSV()
Dim cel As Range
Dim LigBateauUrg As Integer
Dim ShFr As Worksheet
Dim i As Byte, j As Byte, k As Byte, sh As Byte
Dim ref As String
Call Trier
Application.ScreenUpdating = False
Set ShFr = Worksheets("CSV")
k = 1
For sh = 1 To Sheets.Count
If Left(Sheets(sh).Name, 8) = "FR" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") Then k = k + 1
Next sh
With Worksheets("BDD")
For Each cel In .ListObjects("T_Bdd").ListColumns(19).DataBodyRange
Select Case cel.Value
Case Is = "": Exit For
Case Is = "Oui"
If cel.Interior.ColorIndex <> 3 Then
If cel.Value = "Oui" Then
Sheets("CSV").Copy after:=Sheets(Sheets.Count)
Set ShFr = ActiveSheet
ShFr.Name = "REBUS" & "_" & Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "_" & k
k = k + 1
i = 3
j = 2
ShFr.Range("A" & j) = cel.Offset(0, -11) 'Design
ShFr.Range("B" & j) = cel.Offset(0, -7) 'long
ShFr.Range("C" & j) = cel.Offset(0, -6) 'larg
ShFr.Range("D" & j) = cel.Offset(0, -8) 'ep
ShFr.Range("E" & j) = cel.Offset(0, -9) 'matière
ShFr.Range("F" & j) = cel.Offset(0, 5) 'sdf
ShFr.Range("G" & j) = cel.Offset(0, -4) 'commentaire
ShFr.Range("H" & j) = cel.Offset(0, 6) 'chant1
ShFr.Range("I" & j) = cel.Offset(0, 7) 'Chant2
ShFr.Range("J" & j) = cel.Offset(0, 8) 'Chant3
ShFr.Range("K" & j) = cel.Offset(0, 9) 'chant4
ShFr.Range("L" & j) = cel.Offset(0, 5) 'Meuble
ShFr.Range("M" & j) = cel.Offset(0, 10) 'repère
ShFr.Range("N" & j) = cel.Offset(0, 4) 'Option
ShFr.Range("O" & j) = cel.Offset(0, -15) 'modèle bateau
ShFr.Range("P" & j) = cel.Offset(0, -16) 'num bateau
ShFr.Range("Q" & j) = cel.Offset(0, -10) 'Qté
j = j + 1
End If
End If
End Select
'ref = ""
Next cel
.Range("T_BDD").Sort Key1:=Range("T_BDD[Date]"), Header:=xlYes, Order1:=xlAscending 'tri pour remettre BDD par date
End With
Application.ScreenUpdating = True
End SubMerci à ceux qui prenne le temps de lire et de répondre.
bonjour,
vous n'avez pas le fichier excel avec quelque lignes (une dizaine) et ce que vous voulez comme résultat CSV ? Je ne commence pas à lire cette macro.
Bonjour BsAlv,
Voici le fichier, il s'agit d'un fichier de gestion de rebus.
J'explique en 2-3 mots le fichier,
Pour chaque pièce rebutée on rempli un formulaire qui vient se mettre à la suite dans l'onglet BDD. Pour relancer les pièces il faut double cliquer dans les cases vide dans la colonne "relancé" afin qu'un "oui" s'affiche. Lorsque l'on clique sur "Validation des relances", ça vient dans un premier temps créer les fiches suiveuses de chaque pièces (en fonction de leurs caractéristiques), et dans un second temps ça fait une copie de l'onglet "CSV" et ça vient ajouter les données de chaque pièces relancées dans celui-ci. Onglet qui est dans en même temps enregistré à un endroit sur le serveur.
C'est dans ce fameux fichier que je souhaite mettre des décimales points à la place de virgules sur les colonne B,C,D.
Je sais pas si je me suis bien fait comprendre, mais je reste a ta disposition pour répondre à tes questions.
Voici en complément du fichier de base une photo du résultat que je souhaite obtenir :