Bonjour,

Je sais que le sujet de ce post fait l'objet de plusieurs demandes.

Mais ce post concerne essentiellement l'analyse de l'environnement windows (options régionales et/ou international pour Excel)
J'appartiens à une entreprise ou il existe 2 versions d'Office (2003 & 2007) et la mutation en 2007 n'est pas finalisé (sachant que l'option régionale est la ",").

Comme défini au préalable je suis en 2003 (avec option internationale le ".")et j'ai mis en place un USf avec une 20 vingtaine de TexBox ne demandant que des saisies de valeur décimales avec 2 chifffres après la "virgules" (le point pour moi).

Chaque TextBox à l'ouverture de l'USF reçoit la valeur des cellules.

Exemple de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Private Sub UserForm_Initialize()
Dim i As Integer
 
UserForm1.TextBox1.Value = Sheets("DONNEES").Range("B7").Value
If IsNumeric(TextBox1) Then TextBox1 = Round(TextBox1, 2)
UserForm1.TextBox73.Value = Sheets("DONNEES").Range("d14").Value
If IsNumeric(TextBox73) Then TextBox73 = Round(TextBox73, 2)
UserForm1.TextBox2.Value = Sheets("DONNEES").Range("B8").Value
If IsNumeric(TextBox2) Then TextBox2 = Round(TextBox2, 2)
UserForm1.TextBox3.Value = Sheets("DONNEES").Range("B9").Value
If IsNumeric(TextBox3) Then TextBox3 = Round(TextBox3, 2)
Et à l'inverse je demande de mettre à jour les valeurs du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Private Sub TextBox6_Change()
Sheets("TAUX DE CHARGES").Range("F7") = TextBox6
End Sub
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub TextBox10_Change()
If Len(TextBox10) = 0 Then
TextBox10.MaxLength = 255
If Right(TextBox10, 1) = "." Or Right(TextBox10, 1) = "," Then
TextBox1.MaxLength = Len(TextBox10) + 2
End If
End If
Sheets("DONNEES").Range("b26") = TextBox10
End Sub
Mais ça se complique avec la mutation 2003 vers 2007, car mes collégues ont le déboguage à l'ouverture pour la valeur.

En fait j'ai deux questions

Est-il possible de définir pour l'ensemble des TextBox le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 46 Then KeyAscii = 44
End Sub
Et en fonction de votre réponse ci dessus, est il possible via code VB d'analyser l'environnement international d'Excel et/ou Option Régional pour permettre en fonction de cette dernière de reprendre le code ci dessus (modifié par vos propositions) et d'ajuster le "Keypress"

Je sais je suis gourmand, mais ça me permettrait déjà de comprendre le fonctionnement API et aussi de voir les erreurs ou oubli que j'ai généré dans mes codes