Utiliser uniquement le séparateur point dans Excel et VBA

Bonjour,

Dans le fichier que j'utilise, suite à des problèmes avec les séparateurs décimaux "point" et "virgule », j'ai décider de n'utiliser que le "point" (plus simple avec le clavier numérique)

J'ai donc dans les Options Excel modifié le séparateur "," par "."

J'utilise dans mon fichier une Userform avec différentes TextBox chargées soit par des cellules de ma feuille Excel:

TextBoxLongueurFournisseur.Value = Sheets("Table").Range("AA1").Value

soit par des calculs entre TextBox:

TextBoxPoidsTolePourFournisseur.Value = TextBoxDensite * TextBoxDimensionTolePourFournisseur *TextBoxEpaisseurTole.Value

Voici mon premier problème:

Lorsque je charge une Textbox avec la valeur d'une cellule (cf code précédent) il apparait avec une "virgule" malgré que j'ai changé le séparateur.

Pour modifier cela j'ai utilisé un code que j'ai trouvé:

Private Sub TextBoxLongueurFournisseur_Change()

Dim Sep$
Sep = Application.International(xlDecimalSeparator)
TextBoxLongueurFournisseur = Replace(TextBoxLongueurFournisseur, ".", Sep)
TextBoxLongueurFournisseur = Replace(TextBoxLongueurFournisseur, ",", Sep)

End Sub

Grace à cela, j'ai bien ma valeur chargée dans la textbox avec un point mais voila mon deuxième problème:

les calculs des autres TextBox ne se réalisent plus car VBA effectue ses calculs avec la Virgule comme séparateur.

Dans ma feuille Excel de par les Option, le séparateur est désormais un point.

Je souhaiterai que dans VBA pour les calculs et dans les toutes les TextBox de mon Userform (environ 40 TextBox) le séparateur décimal soit aussi un point

Auriez-vous une solution?

Merci pour votre aide

Cdt Bruno

Bonjour

Pourquoi tu te compliques la vie

Pour sauvegarder ou utiliser la valeur de tes textbox pourquoi ne pas utiliser

Val(Replace(Me.TextBox1, ",", "."))

Alors que l'on tape un point ou une virgule cela n'a aucune importance

le problème est que j'ai dans mon fichier environ 40 TextBox qui sont modifiées très régulièrement par l'intermédiaire de calculs

en mettant le code

For Each obj In Controls
  If TypeOf obj Is TextBox Then
   Val (Replace(obj, ",", "."))
  End If
Next

cette action ne s'effectue que ponctuellement à l'initialisation

Si comme tu dis pour toutes mes TextBox un point et une virgule pouvaient être vu de la même manière ce serait idéal !!!

Par exemple

si je modifie une valeur "3,57" par la valeur "4,57" tout fonctionne or si je modifie une valeur "3,57" par la valeur "4.57" au clavier numérique j'ai une erreur type

Merci de ta patience

Bonjour

Je me suis mal expliqué

Ce n'est pas à l'initialisation que tu dois faire ça, mais lorsque tu sauvegardes ou que tu as besoin de calculer avec ton TextBox que tu utilises cette formule

Exemple 3 textbox : dans Le 1er et le 2ème des nombres avec soit le point soit la virgule et le résultat dans le 3ème

Comme procédures

Private Sub TextBox1_Change()
  Me.TextBox3 = Val(Replace(Me.TextBox1, ",", ".")) * Val(Replace(Me.TextBox2, ",", "."))
End Sub
Private Sub TextBox2_Change()
  Me.TextBox3 = Val(Replace(Me.TextBox1, ",", ".")) * Val(Replace(Me.TextBox2, ",", "."))
End Sub

C'est à dire que j'ai beaucoup de ligne mais je m'y lance et je te tiens au courant

Merci !! J'ai effectué cette manip à chaque erreur de compatibilité!! du coup il me transforme les format text en format nombre!! C'est parfait !! Merci beaucoup !!

Rechercher des sujets similaires à "utiliser uniquement separateur point vba"