Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

patricktoulon

XLDnaute Barbatruc
re
me.controls(colonne5.tabindex-1).propriété
a condition que tu n'est pas construit ton userform et Control comme un chapacan et que le tableau (tabindex) soit cohérent (dans l'ordre) sinon tu sera obligé de le nommer explicitement
 

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

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
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub CléCherchée_AfterUpdate()
With UserForm1.Colonne4
        .BackStyle = Colonne5 = "Oui"
        .BackColor = array(&H80FFFF, &H80000005)(abs(Colonne5 = "Oui"))
        .ForeColor =array(&HFF&, &H0&)(abs(Colonne5 = "Oui"))
    End With
End Sub


bon d'accords je sort
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…