XL 2019 Texbox en couleur suivant conditions

Mapat

XLDnaute Occasionnel
Bojour

J'ai adapté un formulaire créé par Mr Boisgontier
Serait-il possible, suivant la réponse qui est en colonne E (Oui ou Non) que le texBox
correspondant sur le formulaire se mette en couleur : Oui = fond jaune et police rouge

En vous souhaitant une bonne soirée

Cordialement
 

Pièces jointes

  • Essai couleur.xlsm
    54.5 KB · Affichages: 22
Solution
bonsoir
VB:
Private Sub Colonne5_Change()
    If Colonne5 = "Oui" Then
        Me.Colonne5.BackStyle = fmBackStyleOpaque
        Me.Colonne5.BackColor = &H80FFFF
        Me.Colonne5.ForeColor = &HFF&
    Else
        Me.Colonne5.BackStyle = fmBackStyleTransparent
        Me.Colonne5.BackColor = &H80000005
        Me.Colonne5.ForeColor = &H0&
    End If
End Sub

Staple1600

XLDnaute Barbatruc
Re

Alors ajoute ce code dans celui de l'userform
VB:
Private Sub couleur()
 With Me.Colonne4
        .BackStyle = IIf(Colonne5 = "Oui", fmBackStyleOpaque, fmBackStyleTransparent)
        .BackColor = IIf(Colonne5 = "Oui", &H80FFFF, &H80000005)
        .ForeColor = IIf(Colonne5 = "Oui", &HFF&, &H0&)
    End With
End Sub
puis cette ligne dans la procédure nommée Private Sub CléCherchée_click()
VB:
 Select Case TypeName(c)
           Case "TextBox", "ComboBox"
             Me(nom_control) = f.Cells(ligneEnreg, col)
             couleur '<- ajout à faire ici
           Case "Frame"

NB: Donc reprendre le code initial présent dans ta PJ du premier message
Et faire juste ces deux ajouts.

Test OK sur mon PC.
 

patricktoulon

XLDnaute Barbatruc
re
exemple le texte box change la couleur du précédent si "oui"
VB:
Private Sub tous_Change(txtb, bkcolor, fontcolor, mot$)
    Dim X
   X = Abs(LCase(Me.ActiveControl.Value) = mot)
        With txtb
         .BackStyle = X
        .BackColor = bkcolor
        .ForeColor = fontcolor(X)
    End With
End Sub

Private Sub colonne2_Change()
    tous_Change colonne1, vbYellow, Array(vbBlack, vbRed), "oui"
End Sub

Private Sub colonne3_Change()
    tous_Change colonne2, vbYellow, Array(vbBlack, vbRed), "oui"
End Sub

Private Sub colonne4_Change()
    tous_Change colonne3, vbYellow, Array(vbBlack, vbRed), "oui"
End Sub
Private Sub colonne5_Change()
    tous_Change colonne4, vbYellow, Array(vbBlack, vbRed), "oui"
End Sub
demo3.gif

ca peut fonctionner avec les combobox aussi ;)
 

patricktoulon

XLDnaute Barbatruc
re
ouais mais la ça n'est pas du kiss
le K.I.S.S serait de faire x sub ou fonction faisant la même chose pour x control
;)
D'autant plus que la sub générique utilisant le bouleen est certainement moins lourde qu'un "IIF(...,...,...)"même si dans le cas présent ca représente un quart de pois chiche
 

Staple1600

XLDnaute Barbatruc
Re

D'ailleurs, je me suis fait un noeud aussi
En ajoutant juste cette procédure, je rends hommage à Gribouille ;)
VB:
Private Sub CléCherchée_AfterUpdate()
With UserForm1.Colonne4
        .BackStyle = IIf(Colonne5 = "Oui", fmBackStyleOpaque, fmBackStyleTransparent)
        .BackColor = IIf(Colonne5 = "Oui", &H80FFFF, &H80000005)
        .ForeColor = IIf(Colonne5 = "Oui", &HFF&, &H0&)
    End With
End Sub
 

Discussions similaires