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 :
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
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)
ou
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
Mais ça se complique avec la mutation 2003 vers 2007, car mes collégues ont le déboguage à l'ouverture pour la valeur.
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
En fait j'ai deux questions
Est-il possible de définir pour l'ensemble des TextBox le code suivant :
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"
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
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
Partager