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 Sub
Sub 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 Sub

Merci à 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 :

image
6test1.xlsm (115.33 Ko)
Rechercher des sujets similaires à "separateur decimale enregistrement csv"