Bonjour à tous,
Je voulais un code qui n'autorise que les chiffres dans un textbox de formulaire. Dans un tutoriel sur les classes, je récupère donc ce code de Emmanuel Tissot et qui fonctionne parfaitement.
Module de classe appelé NumBox
et dans le code du userform:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Public WithEvents TargetBox As MSForms.TextBox Private Sub TargetBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0 End Sub
Maintenant je voudrais changer la couleur de fond et de police quand j'entre et sors d'un textbox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim NumBoxes As Collection 'Stocke les références à chaque instance Private Sub UserForm_Initialize() Dim Ctl As MSForms.Control Dim MyNumBox As NumBox Set NumBoxes = New Collection For Each Ctl In Me.Controls If TypeOf Ctl Is MSForms.TextBox Then Set MyNumBox = New NumBox 'Crée une nouvelle instance Set MyNumBox.TargetBox = Ctl 'Connecte la variable à l'objet NumBoxes.Add MyNumBox 'Ajoute l'instance à la collection End If Next End Sub
Je me dis, facile, je n'ai qu'à intercepter les 2 évènements avec ce code dans la classe NumBox:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub TargetBox_Enter() With TargetBox .BackColor = &H80000002 .ForeColor = &H80000005 End With End Subet là...rien ne se passe, pas d'erreur de compilation ni d'exécution mais les couleurs ne changent pas. Quelqu'un sait où est le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub TargetBox_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TargetBox .BackColor = &H80000005 .ForeColor = &H80000008 End With End Sub
Partager