Remplacer la virgule par un point

Bonjour tout le monde,

me voila avec un petit problème que je n’arrive pas à résoudre.
Sous Office 365 cela fonctionne, mais comme on travaille également sous Office 2021, et là ça ne fonctionne plus !

Explications :

Ci-dessous vous avez le code du UserForm en question.


Private Sub ANNULER_Click()
        TextBox1 = ""
        TextBox3 = ""
        TextBox4 = ""
        TextBox5 = ""
        TextBox6 = ""
        TextBox10 = ""
        TextBox12 = ""
        TextBox14 = ""
        TextBox15 = ""
        TextBox16 = ""
        ComboBox2 = ""
        ComboBox10 = ""
        ComboBox12 = ""
       
End Sub

Private Sub CommandButton91_Click()
 Dim J As Long, i As Integer, No_ID As String, Dl%, DerLigne%

   On Error Resume Next

   With [Tab_1]
   If .Item(J, 1) <> "" Then J = .Rows.Count + 1 Else J = 1
   
   No_ID = "R" & Format(J, "0000")
    .Item(J, 1) = No_ID
    .Item(J, 2) = UCase(ComboBox10)
    .Item(J, 3) = TextBox1.Text
    .Item(J, 4) = TextBox14.Text
    .Item(J, 5) = TextBox15.Text
    .Item(J, 6) = ComboBox13.Text
    .Item(J, 6) = ComboBox2.Text
    .Item(J, 6) = ComboBox12.Text
    .Item(J, 7) = CDbl(TextBox3)
    .Item(J, 8) = CDbl(TextBox4)
    .Item(J, 9) = CDbl(Application.WorksheetFunction.Substitute(TextBox5.Value, ".", ","))
    .Item(J, 11) = CDate(TextBox6)
    .Item(J, 11).NumberFormat = "m/d/yyyy"
    .Item(J, 12) = CDbl(TextBox10)
    .Item(J, 19) = TextBox17.Text
    
   MsgBox "Nouvel article enregistré dans le stock."
   End With
   
   If MsgBox("Voulez-vous créer un autre nouvel article ?", vbYesNo) = vbYes Then
   
    Tri_Stock
    ReIndex_ID
    COMMANDE_SIMPLE.InitListBox
    COMMANDE_PAR_MENUS.InitListBox
    Else

    Tri_Stock
    ReIndex_ID
    COMMANDE_SIMPLE.InitListBox
    COMMANDE_PAR_MENUS.InitListBox
    Unload Me
 End If
End Sub

Private Sub CommandButton92_Click()
Unload Me
GESTION_STOCK.Show
End Sub

Private Sub UserForm_Initialize()

   'Ote la croix de l'userform - Code Option Explicit dans module MOT_DE_PASSE
    OteCroix Me.Caption
    
    TextBox5 = Format(TextBox5, "#,###,##0.000 €")
    TextBox12 = Format(TextBox12, "#,###,##0.000 €")
    
    With [Tab_1[Rayons]]
    
    For i = 1 To .Rows.Count
    ComboBox10 = .Item(i, 1)
    
    '...et filtre les doublons
    If ComboBox10.ListIndex = -1 Then ComboBox10.AddItem .Item(i, 1)
    Next i
    End With
    
    ComboBox10.ListIndex = -1
     
     
    With [Tab_1[Unité]]
    For i = 1 To .Rows.Count
    ComboBox2 = .Item(i, 1)
    '...et filtre les doublons
    If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem .Item(i, 1)
    Next i
    End With
    
    ComboBox2.ListIndex = -1
    
    With [Tab_1[Unité]]
    For i = 1 To .Rows.Count
    ComboBox12 = .Item(i, 1)
    '...et filtre les doublons
    If ComboBox12.ListIndex = -1 Then ComboBox12.AddItem .Item(i, 1)
    Next i
    End With
    
    ComboBox12.ListIndex = -1
             
    With [Tab_1[Unité]]
    For i = 1 To .Rows.Count
    ComboBox13 = .Item(i, 1)
    '...et filtre les doublons
    If ComboBox13.ListIndex = -1 Then ComboBox13.AddItem .Item(i, 1)
    Next i
    End With
    
    ComboBox13.ListIndex = -1
             
             
    Tri_Stock
    ReIndex_ID
    
End Sub

Private Sub TextBox4_Change()
If TextBox4 <> "" Then
If IsNumeric(TextBox4) = False Then
MsgBox ("Saisie incorrecte !!!")
TextBox4 = ""
End If
Else
TextBox12 = ""
End If
If TextBox4 <> "" And TextBox5 <> "" Then
TextBox12 = Format(TextBox4 * TextBox5, "#.#000 €")
TextBox12 = Format(TextBox12, "#,##0.000 €")
End If
End Sub

Private Sub TextBox5_Change()
If TextBox5 <> "" Then
If IsNumeric(TextBox5) = False Then
MsgBox ("Saisie incorrecte !!!")
TextBox5 = ""
End If
Else
TextBox12 = ""
End If
If TextBox4 <> "" And TextBox5 <> "" Then
TextBox12 = Format(TextBox4 * TextBox5, "#.#000 €")
TextBox12 = Format(TextBox12, "#,##0.000 €")
End If
End Sub

Si je saisi en textbox5 le prix, par exemple 5.208 il me dit saisie incorrecte.

Alors que sous Office365 cela fonctionne.

Dans les options fichier j’ai mis ce que vous verrez sur l’image ci-dessous.

Pourriez vous m’aider s’il vous plaît.

Merci d’avance à vous.
Rubis

Bonsoir, sur excel 2021
A tester
Fichier,
Options,
Vérifications,
« Puis à droite » Options de correction automatique
Puis dans l’encadrer remplacer tu met la virgule « , » et dans l’encadrer Par tu mets le point « . »
Ajouter
Ok
Et si ça te convient pas tu supprimes de nouveau
Slts

Bonjour,

Merci pour ton information, mais cela ne change rien.
Cordialement, Rubis

Bonjour Rubis,
As tu testé en cochant la case "Utiliser les séparateurs système

Bonjour Mimimathy,

oui et cela ne change rien !

Est ce qu’il faudrait changer tous les codes pour faire fonctionner sous 2021 ?

Non, je ne pense pas
Je crois que le problème doit venir des lignes

TextBox5 = Format(TextBox5, "#,###,##0.000 €")
TextBox12 = Format(TextBox12, "#,###,##0.000 €")

n’ayant ni 365, ni 2021 je n’en sais pas plus

Oui j’y pensai aussi, mais je ne veux pas m’aventurer là dedans car si je fais une erreur j’ai peur que plus rien ne fonctionne.

Si tu n’as aucun des deux, tu m’avais fais les codes sous quelle version si je peux te demander cela ?

Je vais attendre un peu, peut-être il y a d’autres réponses.

Merci à toi

A tout hazard, juste en-dessous Private Sub TextBox5_Change()

je l’ai placé ainsi et cela ne donne rien de nouveau.


Private Sub TextBox5_Change()
TextBox5 = Replace(TextBox5, " . ", " ,")
If TextBox5 <> "" Then
If IsNumeric(TextBox5) = False Then
MsgBox ("Saisie incorrecte !!!")
TextBox5 = ""
End If
Else
TextBox12 = ""
End If
If TextBox4 <> "" And TextBox5 <> "" Then
TextBox12 = Format(TextBox4 * TextBox5, "#.#000 €")
TextBox12 = Format(TextBox12, "#,##0.000 €")
End If
End Sub

Vérifie que tu n’ai pas mis d’espace entre les guillemets

TextBox5 = Replace(TextBox5, ".",",")

Re,
alors je viens d’essayer en modifiant le code du textbox5 ci-dessous

Private Sub TextBox5_Change()
TextBox5 = Replace(TextBox5, " . ", " ,")
If TextBox5 <> "" Then
If IsNumeric(TextBox5) = False Then
MsgBox ("Saisie incorrecte !!!")
TextBox5 = ""
End If
Else
TextBox12 = ""
End If
If TextBox4 <> "" And TextBox5 <> "" Then
TextBox12 = Format(TextBox4 * TextBox5, "#.#000 €")
TextBox12 = Format(TextBox12, "#,##0.000 €")
End If
End Sub

je l’ai modifié en changeant la virgule dans ton exemple (Textbox5=replace(textbox5,« . »,« . »), comme ci-dessous et il me place bien le point dans le textbox5 lors de la saisie. Mais est-ce correct de laisser le code ainsi ?

Private Sub TextBox5_Change()
TextBox5 = Replace(TextBox5, ".", ".")

If TextBox4 <> "" And TextBox5 <> "" Then
TextBox12 = Format(TextBox4 * TextBox5, "#.#000 €")
TextBox12 = Format(TextBox12, "#,##0.000 €")
End If
End Sub

voici le fichier

Classeur1.xlsm (20,5 Ko)

Bonjour Rubis,
Donc, tu peux déjà ôter ma ligne de modif
Cela vient d’ailleurs, et je te renvoi à ma réponse 5/11

Fais des tests dans une copie de ton fichier en modifiant les « . » et les « , »

Bonjour Mimimathy,

tu veux dire les lignes ci-dessous ?

TextBox5 = Format(TextBox5, "#,###,##0.000 €")
TextBox12 = Format(TextBox12, "#,###,##0.000 €")

Oui, c’est les lignes désignées dans ma réponse 5/11
Après c’est que mon avis, et sans fichier à tester, je marche au « hasard »

je n’y arrive pas !

voici un petit exemple du fichier si cela peut aider a trouver le problème.

Merci a toi

Classeur1.xlsm (17,8 Ko)

Bonjour,
Juste en passant (je ne fais pratiquement plus de VBA, et pas envie d’y replonger)
Cependant, ceci m’interpelle…

   On Error Resume Next

   With [Tab_1]
   If .Item(J, 1) <> "" Then J = .Rows.Count + 1 Else J = 1

J n’est pas initialisé dans une boucle, comme il aurait dû l’être…
Et le code associé à un Tableau Structuré n’est pas tout à fait comme cela.
De plus, une ligne que je n’ai jamais aimé, c’est le On Error… (qui dans ton cas, masque le problème)
Cette ligne ne devrait pas exister, il faut prévoir les problèmes possibles, et y remédier avant qu’ils n’arrivent
Bon courage

Re,
Teste,
J’avais pourtant précisé d’ôter les espaces entre les parenthèses!!!
Classeur1 (2).xlsm (20,6 Ko)

oui Mimimathy je sais, mais je l’avais essayé en modifiant les espaces et cela n’avait rien changé. D’ailleurs je viens d’essayer a nouveau dans notre fichier réel et il me donne toujours une virgule dans le textbox5. Je crois que nous allons également installer Office 365 sur le pc qui pose ce problème et on sera tranquille.

Cela va faire 2 ans que ce fichier fonctionne très bien sous office 365 au bureau (grâce à toi, FFO, etc…, donc c’est peut-être la seule solution pour le moment.

@Cousinhub

Merci d’avoir participé. Mais comme j’ai expliqué a Mimimathy sous Office 365 tout fonctionne très bien donc je vais faire comme dit.

En tout cas merci à vous.

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.