XL 2019 changement Couleur textbox en fonction du contenu

Bizarre

XLDnaute Nouveau
Bonjour
J'aimerais que le fond de ma textbox15 passe en rouge et l'écriture en blanc gras si le nombre dépasse 1500
Merci de prendre du temps pour m'aider
 
Solution
Bonsoir le forum
Bonsoir Bizarre, M12, job75

Comme je planchais, je dépose ma mouture :
VB:
 Private Sub TextBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case Val(TextBox15)
Case Is < 1500
Me.TextBox15.BackColor = vbWhite
    Me.TextBox15.ForeColor = vbBlack
    Me.TextBox15.Font.Bold = False
    Case Is > 1500
 Me.TextBox15.BackColor = vbRed
    Me.TextBox15.ForeColor = vbWhite
    Me.TextBox15.Font.Bold = True
     End Select
End Sub
Bonne fin de ouikand à toutes & à tous
@+ Eric c

M12

XLDnaute Accro
Bonjour,
Ajoute ceci dans ton Usf
VB:
Private Sub TextBox15_AfterUpdate()
  If Me.TextBox15.Value > 1500 Then
    Me.TextBox15.BackColor = vbRed
    Me.TextBox15.ForeColor = vbWhite
    Me.TextBox15.Font.Bold = True
  Else
    Me.TextBox15.BackColor = vbWhite
    Me.TextBox15.ForeColor = vbBlack
    Me.TextBox15.Font.Bold = False
  End If
End Sub
 

job75

XLDnaute Barbatruc
Bonjour Bizarre, M12,

Ou aussi :
VB:
Private Sub TextBox15_Change()
Dim test As Boolean
With TextBox15
    test = Val(Replace(.Text, ",", ".")) > 1500
    .BackColor = IIf(test, vbRed, vbWhite)
    .ForeColor = IIf(test, vbWhite, vbBlack)
    .Font.Bold = test
End With
End Sub
A+
 

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Bizarre, M12, job75

Comme je planchais, je dépose ma mouture :
VB:
 Private Sub TextBox15_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Select Case Val(TextBox15)
Case Is < 1500
Me.TextBox15.BackColor = vbWhite
    Me.TextBox15.ForeColor = vbBlack
    Me.TextBox15.Font.Bold = False
    Case Is > 1500
 Me.TextBox15.BackColor = vbRed
    Me.TextBox15.ForeColor = vbWhite
    Me.TextBox15.Font.Bold = True
     End Select
End Sub
Bonne fin de ouikand à toutes & à tous
@+ Eric c
 

Bizarre

XLDnaute Nouveau
Bonjour,
Ajoute ceci dans ton Usf
VB:
Private Sub TextBox15_AfterUpdate()
  If Me.TextBox15.Value > 1500 Then
    Me.TextBox15.BackColor = vbRed
    Me.TextBox15.ForeColor = vbWhite
    Me.TextBox15.Font.Bold = True
  Else
    Me.TextBox15.BackColor = vbWhite
    Me.TextBox15.ForeColor = vbBlack
    Me.TextBox15.Font.Bold = False
  End If
End Sub
Bonjour Bizarre, M12,

Ou aussi :
VB:
Private Sub TextBox15_Change()
Dim test As Boolean
With TextBox15
    test = Val(Replace(.Text, ",", ".")) > 1500
    .BackColor = IIf(test, vbRed, vbWhite)
    .ForeColor = IIf(test, vbWhite, vbBlack)
    .Font.Bold = test
End With
End Sub
A+
Merci de vos réponses du coup j'ai pris le deuxième code de vb et tout fonctionne comme je le souhaite merci encore ç vous deux et bonne soirée
comment marquer résolu
 

patricktoulon

XLDnaute Barbatruc
bonsoir à tous
juste en passant je donne ma version
VB:
Private Sub TextBox1_Change()
    Dim V#:
    With TextBox1
        V = Val(Replace(.Value, ",", "."))
        .BackColor = Array(vbWhite, vbRed)(Abs(V > 1500))
        .ForeColor = vbWhite * (Abs(V > 1500))
        .Font.Bold = .ForeColor = vbWhite
    End With
End Sub
 

Eric C

XLDnaute Barbatruc
Re le forum
Re les primo intervenants, bonsoir Patrick, mapomme

De sortie ce soir, je n'ai pas percuté de suite mais il me semble que le 2ème code de ce fil est celui de job75 et non le mien ??
Sinon, en terme simple, à quoi correspond :
VB:
Val(Replace(.Value, ",", "."))
La valeur saisie est un entier ?
Bonne nuit à toutes & à tous
@+ Eric c
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Sinon, en terme simple, à quoi correspond :
VB:
Val(Replace(.Value, ",", "."))

Bonjour @Eric C :),

Le TextBox retourne dans tous les cas un texte (vide ou non).
Ce qui nous intéresse, c'est la conversion de ce texte en nombre qu'on pourra ensuite comparer à la valeur du nombre seuil 1 500.
Pour convertir, on utilise la fonction VAL. Mais VBA étant d'origine américaine, le séparateur décimal natif de la fonction VAL est le point. Donc si on saisit dans TextBox un nombre décimal (avec la virgule comme tout bon gaulois), il faut remplacer cette virgule par un point avant de l'envoyer pour la conversion dans la fonction VAL.
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
173

Statistiques des forums

Discussions
312 305
Messages
2 087 088
Membres
103 461
dernier inscrit
dams94