Ou avais-je la tête !!!
Private Sub TextBox1_Change() TextBox2 = spacer(TextBox1.Value) TextBox2 = UCase(TextBox2.Value) End Sub
Tu peux directement écrire
TextBox2.Value = UCase(spacer(TextBox1.Value))
Et j'insiste sur la mauvaise pratique de passer par la conversion implicite
Dans ce cas-là je pourrais l'écrire:
TextBox2.Text = UCase(spacer(TextBox1.Text))
Concernant "Option Strict" ça reste assez obscure.
Avec "Option Strict" avec le code ci-dessus je ne parviens pas à tout déclarer correctement pour que ça passe.
Effectivement la propriété Text devrait passer aussi.
Par contre, sur Excel 2016, je n'ai pas Option Strict, en fait quand je l'ai écrit je confondais avec VB.Net (je ne code jamais en VBA).
Pour ta fonctions spacer, je pense que ça peut se réduire à un replace regex. Mais faut que je vérifie que ça existe e, VBA.
Je viens de m'apercevoir que j'ai laissé de test en trop
Public Function spacerRegex(s As String) As String Dim RegEx As Object Set RegEx = New RegExp RegEx.Global = True RegEx.Pattern = "(\d+)(\D+)?" spacerRegex = UCase(Trim(RegEx.Replace(s, " $1 $2"))) End Function