Résolu 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
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

JM27

XLDnaute Impliqué
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
 
Ce message a été identifié comme étant une solution!

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
 

Mapat

XLDnaute Occasionnel
Bonjour
Merci à vous deux de vous être penché sur ce petit problème
Fonctionne bien pour JM27
Pas de couleur de fond pour Staple
Bonne journée et cordialement
 

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 Accro
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
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Mapat
Je pue de la g*eule?
Parce que je suis également intervenu dans ton fil
(comme l'indiquent les messages#5 et #6)
A moins que tu m'ignores ?

Eric_C
Merci d'avoir corriger mon inversion ;)
 

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
 

Staple1600

XLDnaute Barbatruc
Re

Sauf que j'ai toujours pas compris ce que tu souhaites
Est-ce de colorier le TextBox qui précède Colonne5 si celui-ci affiche Oui ?
(C'est ce que semble vouloir dire ta dernière copie d'écran)
 

patricktoulon

XLDnaute Barbatruc
je rejoins Staple
si tu donnais tout les éléments d'un coup on épiloguerais pas ;)

alors quand tu dis que ca marche pas assure toi d'avoir posé ta question avec toute les conditions
sinon on s'en sort pas
 

Mapat

XLDnaute Occasionnel
Staple
Est-ce de colorier le TextBox qui précède Colonne5 si celui-ci affiche Oui ?

Oui c'est exactement cela
 

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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas