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

Couleur de fond dans TextBox selon condition

  • Initiateur de la discussion Initiateur de la discussion lynyrd
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lynyrd

XLDnaute Impliqué
Bonjour le forum
Je voudrais changer la couleur de fond des TextBox suivant certains critères.
J'ai fait ceci qui fonctionne très bien
Private Sub TextBox3_Change()
If TextBox3.Value = "GS" Then TextBox3.BackColor = &H0000FF00&
if TextBox3.Value = "RP" Then TextBox3.BackColor = &H00FFFF00&
End Sub

L'ennui c'est que je dois appliquer les mêmes critères aux TextBox3 à TextBox189
Dois-je recopier le même code pour chaque TextBox,ou y à t'il un moyen plus simple.
Merci.
 
Re : Couleur de fond dans TextBox selon condition

Bonjour Lynyrd,

J'ai tenté d'adapter le fichier transmis par Laetitia90 (https://www.excel-downloads.com/threads/gestion-complete-de-textbox-via-module-de-classe.166506/ #21). Ceci semble fonctionner :

Dans le code de l'UserForm1 :
Code:
Private Sub UserForm_Activate()
    Set UsF = Me
    Call SetTB
End Sub

Dans le Module1 :
Code:
Public UsF As Object
Private Cnt As MSForms.Control, Tb() As New Classe1, i As Long
Sub SetTB()
    For Each Cnt In UsF.Controls
        If TypeName(Cnt) = "TextBox" Then
            ReDim Preserve Tb(i)
            Set Tb(i) = New Classe1
            Tb(i).SetTextBox Cnt
            i = i + 1
        End If
    Next
End Sub

Dans le module de classe Classe1
Code:
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
    Select Case Val(Right(txt.Name, Len(txt.Name) - 7))
        Case 3 To 189
            If txt.Value = "GS" Then txt.BackColor = &HFF00&
            If txt.Value = "RP" Then txt.BackColor = &HFFFF00
    End Select
End Sub
Sub SetTextBox(ByVal txb As MSForms.TextBox)
    Set txt = txb 'ne pas toucher
End Sub

Cordialement

KD
 
Re : Couleur de fond dans TextBox selon condition

Bonjour Lynyrd, KD

une autre approche, dans le module de l'usf :
Code:
Option Explicit
Private mestb() As New Classe1
Private Sub UserForm_Initialize()
Dim i As Byte
For i = 0 To 186
    ReDim Preserve mestb(0 To i)
    Set mestb(i).montb = Me.Controls("TextBox" & i + 3)
Next i
End Sub

dans le module de classe nommé "Classe1" :
Code:
Option Explicit
Public WithEvents montb As MSForms.TextBox
Private Sub montb_Change()
With montb
    If .Value = "GS" Then .BackColor = &HFF00&
    If .Value = "RP" Then .BackColor = &HFFFF00
End With
End Sub

bonne journée
@+
 
Re : Couleur de fond dans TextBox selon condition

bonjour lynyrd,KenDev,Pierrot🙂🙂🙂
si textbox pas renommées on peut ecrire comme cela

code user
Code:
Dim txt(3 To 189) As New Classe1, i As Byte
Private Sub UserForm_Initialize()
For i = 3 To 189: Set txt(i).txt = Controls("Textbox" & i): Next i
End Sub

code class

Code:
Public WithEvents txt As MSForms.TextBox
Private Sub txt_Change()
With txt
    If .Value = "GS" Then .BackColor = &HFF00&
    If .Value = "RP" Then .BackColor = &HFFFF00
    If .Value <> "RP" And .Value <> "GS" Then .BackColor = &H80000005
End With
End Sub
 
Re : Couleur de fond dans TextBox selon condition

Re, Laetitia🙂

juste pour saluer Laetitia🙂🙂.... dans la classe :
Code:
Option Explicit
Public WithEvents montb As MSForms.TextBox
Private Sub montb_Change()
With montb
    .BackColor = IIf(.Value = "GS", &HFF00&, IIf(.Value = "RP", &HFFFF00, &H80000005))
End With
End Sub
 
Re : Couleur de fond dans TextBox selon condition

Re,

ceci doit se trouver dans le module de l'usf et non dans un module standard :
Code:
Option Explicit
 Private mestb() As New Classe1
 Private Sub UserForm_Initialize()
 Dim i As Byte
 For i = 0 To 186
     ReDim Preserve mestb(0 To i)
     Set mestb(i).montb = Me.Controls("TextBox" & i + 3)
 Next i
 End Sub
 
Re : Couleur de fond dans TextBox selon condition

Bonjour
J'ai adapté vos codes a mes 2 fichiers
Dans le 1er fichier sous excel 2003,aucun problème ( 2 userforms )
Dans le 2 ème fichier sous excel 2007 (1 userform ) il se produit ( pas à chaque fois ) une "AUTOMATION" et ferme le programme excel.
Quelqu'un aurait t'il une idée sur ce message d'erreur.
Merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

L
Réponses
4
Affichages
805
Lindsay_RBD
L
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…