VBA formater plusieurs textbox en fonction du texte

  • Initiateur de la discussion Initiateur de la discussion Lionel37
  • 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 !

L

Lionel37

Guest
Bonjour
Je voudrais changer la couleur de de fond plusieurs textbox selon si il y a du texte a l interieur ou si elle sont vide.
'(exemple sur l'onglet preparation du fichier attache). Pour le moment j'ai reussi a le faire mais je me tape les 2 lignes de code pour chaque textbox. Serait il possible de simplifier ca ? ca je voudrais le faire pour des dizaines de textbox.
Le bouton "refresh" est utilise pour lancer la macro, mais si vous avez une autre combine elle est aussi la bienvenue. Merci a tous pour votre aide.
PS : je suis encore en dessous du niveau debutant 🙁
 

Pièces jointes

Re : VBA formater plusieurs textbox en fonction du texte

Bonjour,

Je te propose une solution avec un module de classe. L'évènement "Change" sera commun à tout les TextBox de la feuille "Preparation". Si tu supprime les caractères d'un des TextBox, il sera coloré en rouge et dans le cas contraire en vert. Le bouton "Refrech" n'étant alors plus nécessaire.
Je joint ton classeur avec la modif.

Hervé.
 

Pièces jointes

Re : VBA formater plusieurs textbox en fonction du texte

Salut Lionel37 et Bienvenue sur XLD, Theze, le Forum

Comme je l'avais fait je met aussi le mien

Un code à placer dans le Module de la Feuille

Code:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x As OLEObject
    For Each x In Sheets("Preparation").OLEObjects
        x.Object.BackColor = IIf(x.Object.Value = "", vbRed, vbGreen)
    Next x
End Sub

là aussi plus besoin de Bouton

Je regarde le tien Theze

Bonne Journée
 

Pièces jointes

Re : VBA formater plusieurs textbox en fonction du texte

Bonjour
Herve ta methode me convient le mieux, le probleme de celle de Theze c est qu'elle s applique a tout les objet y compris les boutons qui changent de couleur. La seule chose qui me manque c'est que je voudrais que cela soit valable pour toute les texte box du classeur. J'ai essayer de trouver en modifiant ton code mais sans succes. Encore une fois Merci a tout les deux
 
Re : VBA formater plusieurs textbox en fonction du texte

Bonsoir,

Pour prendre en compte tous les TextBox du classeur, voici la modif à faire :
Code:
Private Sub Workbook_Open()
    
    'pour initialiser à l'ouverture du classeur
    Initialiser
    
End Sub

Private Sub Initialiser()
    
    Dim Fe As Worksheet
    Dim Objet As OLEObject
    Dim Ctrl As MSForms.TextBox
    Dim I As Integer
    
    'parcour les contrôles des feuilles et les affectent au tableau
    'de contrôles afin qu'ils aient la même procédure évènementielle
    For Each Fe In ThisWorkbook.Worksheets
    
        For Each Objet In Fe.OLEObjects
          
          On Error Resume Next
          Set Ctrl = Objet.Object
        
          If TypeName(Ctrl) = "TextBox" Then
              Debug.Print Ctrl.Name
              I = I + 1
              ReDim Preserve Txt(1 To I)
              Set Txt(I).TextBoxGroup = Ctrl
              
          End If
          
        Next Objet
    
    Next Fe
    
    Set Objet = Nothing
    Set Ctrl = Nothing

End Sub

Hervé.
 
Re : VBA formater plusieurs textbox en fonction du texte

Salut Lionel37, Hervé🙂, le Forum

Bien que la solution de Theze soit la plus adaptée à ton problème, je met met quand même la modification de mon code à placer dans le module ThisWorkbook De plus la couleur changera seulement pour les contrôles type "TextBox"

Code:
Option Explicit

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Dim x As OLEObject
    For Each x In ActiveSheet.OLEObjects
        If x.Name Like "TextBox*" Then
            x.Object.BackColor = IIf(x.Object = "", vbRed, vbGreen)
        End If
    Next x
End Sub

Bonne Journée
 
Re : VBA formater plusieurs textbox en fonction du texte

Dull, Theze

Un grand merci a tout les deux pour cette aide qui m'est tres precieuse et qui me permet d'apprendre un peu.
En faite je vais utiliser les 2 methodes dans deux classeurs differents. Tres tres bien Merci Lionel
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour