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

JM27

XLDnaute Barbatruc
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
Bonsoir le fil

Pour varier les plaisirs, une autre écriture
(je n'ai pas testé mais cela devrait le faire)
VB:
Private Sub Colonne5_Change()
    With Me.Colonne5
        .BackStyle = IIf(Colonne5 = "Oui", fmBackStyleTransparent, fmBackStyleTransparent)
        .BackColor = IIf(Colonne5 = "Oui", &H80FFFF, &H80000005)
        .ForeColor = IIf(Colonne5 = "Oui", &HFF&, &H0&)
    End With
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour le fil
je rejoins Staple1600 mais un tout petit peu différemment
VB:
Private Sub Colonne5_Change()
     With Me.colonne5
        x = Abs(LCase(.Value) = "oui")
        .BackStyle = x
        .BackColor = Array(vbWhite, vbYellow)(x)
        .ForeColor = Array(vbBlack, vbRed)(x)
     End With
End Sub
demo3.gif
 

Eric C

XLDnaute Barbatruc
Bonjour le forum
Bonjour Mapat, JM27, Staple
-- Bonjour Patrick (tu es sur tous les coups.... ;) mais toujours avec un temps d'avance sur moi)

Staple a fait une toute petite erreur dans son code : Il fallait lire :
VB:
.BackStyle = IIf(Colonne5 = "Oui", fmBackStyleOpaque, fmBackStyleTransparent)
pour que cela fonctionne correctement.

Bonne journée
Ma signature.gif
 

Mapat

XLDnaute Occasionnel
Bonsoir
Merci pour ces 2 interventions supplémentaires Patrick et Éric
Qui vont bien également.
Et bien j'en profite pour un petit supplément :
Est-il possible de colorer de la même façon le texbox 4 avec les mêmes conditions
col. 5 oui jaune et rouge non blanc et noir
Merci à vous
Cordialement
 

Mapat

XLDnaute Occasionnel
Re
Pardonne moi, mais je ne pense pas t'avoir oublié en vous remerciant tous les deux dans mon message #4
Tu sais, je suis admiratif des savoirs de chacune des personnes intervenant sur ce forum
et j'essaie justement de ne pas oublier de remercier pour l'aide apportée
Donc non, tu ne pues pas du bec et désolé de ce quiproquo
Cordialement
 

patricktoulon

XLDnaute Barbatruc
bonsoir
non seulement on peut l'associer a plusieurs textboxs mais on peut aussi modifier les couleur pour chaque textboxs différemment avec la même sub

VB:
Private Sub tous_Change(txtb, bkcolor, fontcolor, mot$)
    Dim X
    With txtb
        X = Abs(LCase(.Value) = mot)
        .BackStyle = X
        .BackColor = bkcolor(X)
        .ForeColor = fontcolor(X)
    End With
End Sub

Private Sub TextBox1_Change()
    tous_Change TextBox1, Array(vbWhite, vbYellow), Array(vbBlack, vbRed), "oui"
End Sub

Private Sub TextBox2_Change()
    tous_Change TextBox2, Array(vbWhite, vbBlue), Array(vbBlack, vbYellow), "toto"
End Sub

Private Sub TextBox3_Change()
    tous_Change TextBox3, Array(vbWhite, vbBlue), Array(vbBlack, vbMagenta), "titi"
End Sub
sub =tous_Change
argument1 =le textbox
argument 2=les deux couleurs du back
argument 3=les deux couleur des font
argument 4 =le mot a verifier
 

Staple1600

XLDnaute Barbatruc
Re

=>Mapat
Désolé mais comme tu ne cites que Patrick et Eric dans le message#7
j'ai cru avoir encore été victime du syndrome d'invisibilité d'XLD.
Et un quiproquo de moins, un ;)

PS: J'ai relu tout le fil, et nulle part je ne lis de réaction de ta part au message#3
Ce qui explique le message#8
 

Mapat

XLDnaute Occasionnel
Bonjour
Merci pour ta réponse Patrick, mais je me suis mal fait comprendre
La solution que tu propose est intéressante et je vais la mettre de côté, mais le "oui" doit être en colonne 4
Ce que j'espère, c'est que le texbox 4 se colore lorsque le oui est en colonne 5.
Alors est-ce possible ?

Et un ;) pour Staple

Bonne journée
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Mapat
J'ai enfin ouvert ta PJ (ce que j'aurai du faire dès le départ)
Essaie en remplaçant cette procédure présente dans l'userform
par celle-ci légèrement modifiée.
(ou ajoute ce que j'ai ajouté)
Et redis-moi après avoir testé
VB:
Private Sub CléCherchée_click()
  ligneEnreg = Sheets("BD").[A:A].Find(CléCherchée, LookIn:=xlValues).Row
  For Each c In Me.Controls
         nom_control = c.Name
         If nom_control <> "CléCherchée" And nom_control <> "Enreg" Then
           col = Application.Match(nom_control, [titre], 0)
           Select Case TypeName(c)
           Case "TextBox", "ComboBox"
              With Me(nom_control) 'ajout staple
                .Value = f.Cells(ligneEnreg, col)
                .BackStyle = IIf(.Value = "Oui", fmBackStyleOpaque, fmBackStyleTransparent)
                .BackColor = IIf(.Value = "Oui", &H80FFFF, &H80000005)
                .ForeColor = IIf(.Value = "Oui", &HFF&, &H0&)
              End With 'fin ajout staple
           Case "Frame"
             For Each opt In c.Controls
              If f.Cells(ligneEnreg, col) = opt.Caption Then opt.Value = True
             Next opt
           Case "CheckBox"
             Me(nom_control) = f.Cells(ligneEnreg, col)
           Case "ListBox"
             temp = f.Cells(ligneEnreg, col)
             a = Split(temp, ";")
             For j = 0 To Me(nom_control).ListCount - 1: Me(nom_control).Selected(j) = False: Next j
             If UBound(a) >= 0 Then
               For j = 0 To Me(nom_control).ListCount - 1
                If Not IsError(Application.Match(Me(nom_control).List(j), a, 0)) Then
                   Me(nom_control).Selected(j) = True
                Else
                   Me(nom_control).Selected(j) = False
                End If
               Next j
             End If
           End Select
         End If
  Next c
  
  '---- photo
  If Dir(Me.photo) <> "" Then
      Me.Image1.Picture = LoadPicture(Me.photo)
   Else
      Me.Image1.Picture = LoadPicture
   End If
   '------
  Me.Enreg = ligneEnreg
  Me.CléCherchée.SetFocus
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO