Texte dans une Fenêtre Label

bonjour,

voici une partie de mon code , j'aimerais que lorsque ma checkbox est décochée que le text de mon label soit rayé et non rayé lorsque ma checkbox est coché

ça fonctionne pour mon label 14 mais pas le label 11 une idée?

je pense que c'est dans les propriétés du label mais les 2 ont les mêmes propriété...

merci de votre aide

Private Sub UpdateControls()
    ' Si CheckBox42 est cochée
    If CheckBox42.Value = True Then
        CheckBox43.Enabled = False
        CheckBox44.Enabled = False
        TextBox5.Text = "Veille"
    Else
        CheckBox43.Enabled = True
        CheckBox44.Enabled = True
    End If

    ' Si CheckBox43 est cochée
    If CheckBox43.Value = True Then
        With Label14
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
        End With
        TextBox5.Text = "Vigilance"
    Else
        With Label14
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
        End With
    End If

    ' Si CheckBox44 est cochée
    If CheckBox44.Value = True Then
        With Label11
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
        End With
        TextBox5.Text = "Pré-alerte"
    Else
        With Label11
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
        End With
    End If

    ' Si aucune des 3 CheckBox n'est cochée
    If CheckBox42.Value = False And CheckBox43.Value = False And CheckBox44.Value = False Then
        TextBox5.Text = ""
    End If
End Sub

j'ai oublié de dire que mon texte reste barré en permanence ...

Bonjour, difficile à juger le code appliqué semble vraiment identique. Peut-etre que celq est du à un autre Event qui bloque l'actualisation du Label?

Avez-vous essayé de mettre un Breakpoint (clic à gauche au niveau de la ligne sur laquelle arreter l'execution), et suivi l'exécution pas à pas ? Je pense que cela est nécessaire pour comprendre. En faisant ceci gardez un oeil sur les variables locales (Menu Vue > Variables locales). Cela vous permet de voir si le Label est modifié ou non.

Bonjour Brice2b, Saboh12617,

J'espère que dans le code de chaque checkbox, style Checkboxnn_Click tu as un renvoi à la macro UpdateControls()

Sinon aucun événement ne sera effectif. Il restera bloqué au premier contrôle actif

Bonjour x cellus,

Oui j'ai bien bien mis le renvoi update controls.

Mon problème est que le label reste rayé...

Je bloque un peu. J'ai essayé la solution de s'abonner mais je ne vois pas...

J'ai testé mais en modifiant la construction de ton UpdateControls. Ce n'est pas la procédure If then Else qui englobe le With / End With.

Mais c'est l'inverse. Et cela fonctionne correctement. Voir ci-dessous. On cible directement le label et on applique la condition qui selon la valeur du checkbox formatera le label.

' Si CheckBox43 est cochée
With Label14
    If CheckBox43.Value = True Then
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
        TextBox5.Text = "Vigilance"
    Else
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
  End if
End With

Bonjour X cellus,

Private Sub UpdateControls()
    ' Si CheckBox42 est cochée
    If CheckBox42.Value = True Then
        CheckBox43.Enabled = False
        CheckBox44.Enabled = False
        TextBox5.Text = "Veille"
    Else
        CheckBox43.Enabled = True
        CheckBox44.Enabled = True
    End If

    ' Si CheckBox43 est cochée
    With Label14
    If CheckBox43.Value = True Then
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
        TextBox5.Text = "Vigilance"
    Else
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
    End If
End With
    ' Si CheckBox44 est cochée
    With Label11
    If CheckBox44.Value = True Then
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
        TextBox5.Text = "Pré-alerte"
    Else
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
    End If
End With
    ' Si aucune des 3 CheckBox n'est cochée
    If CheckBox42.Value = False And CheckBox43.Value = False And CheckBox44.Value = False Then
        TextBox5.Text = ""

voici comment j'ai modifié mon code avec ce que vous m'avez envoyé, mais rien y fais j'ai toujours le label 11 reste rayé.

voici comment j'ai fait pour d'autre checkbox où ça fonctionne

Private Sub UserForm_Initialize()
    ' Par défaut, cocher CheckBox47 et décocher CheckBox45 et CheckBox46
    CheckBox47.Value = True
    CheckBox45.Value = False
    CheckBox46.Value = False
    CheckBox45.Enabled = False
    CheckBox46.Enabled = False
    CheckBox45.ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
    CheckBox46.ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
    UpdateControls
End Sub

Private Sub CheckBox45_Click()
    If CheckBox45.Value = True Then
        CheckBox46.Enabled = False
        With Label16
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
            .BorderStyle = fmBorderStyleSingle
            .SpecialEffect = fmSpecialEffectFlat
            .BackColor = RGB(255, 255, 255) ' Couleur de fond blanche
            .BorderColor = RGB(255, 0, 0) ' Bordure rouge
        End With
    Else
        CheckBox46.Enabled = True
        With Label16
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
            .BorderStyle = fmBorderStyleNone
            .SpecialEffect = fmSpecialEffectFlat
            .BackColor = RGB(240, 240, 240) ' Couleur de fond grise
        End With
    End If
End Sub

Private Sub CheckBox46_Click()
    If CheckBox46.Value = True Then
        CheckBox45.Enabled = False
        With Label15
            .Font.Strikethrough = False
            .ForeColor = RGB(0, 0, 0) ' Couleur du texte en noir
            .BorderStyle = fmBorderStyleSingle
            .SpecialEffect = fmSpecialEffectFlat
            .BackColor = RGB(255, 255, 255) ' Couleur de fond blanche
            .BorderColor = RGB(255, 0, 0) ' Bordure rouge
        End With
    Else
        CheckBox45.Enabled = True
        With Label15
            .Font.Strikethrough = True
            .ForeColor = RGB(128, 128, 128) ' Couleur du texte en gris
            .BorderStyle = fmBorderStyleNone
            .SpecialEffect = fmSpecialEffectFlat
            .BackColor = RGB(240, 240, 240) ' Couleur de fond grise
        End With
    End If
End Sub

Private Sub CheckBox47_Click()
    If CheckBox47.Value = True Then
        CheckBox45.Value = False
        CheckBox46.Value = False
        CheckBox45.Enabled = False
        CheckBox46.Enabled = False
        CheckBox42.Value = True
        CheckBox43.Value = True
        CheckBox44.Value = True
        CheckBox42.Enabled = False
        CheckBox43.Enabled = False
        CheckBox44.Enabled = False
        TextBox5.Text = "Tout est activé"
    Else
        CheckBox45.Enabled = True
        CheckBox46.Enabled = True
        CheckBox42.Enabled = True
        CheckBox43.Enabled = True
        CheckBox44.Enabled = True
        TextBox5.Text = ""
    End If
    UpdateControls
End Sub

bien

Bonjour Brice,

Pourriez-vous joindre un fichier avec votre UserForm ?

Votre code est assez lourd et on trouvera beaucoup plus vite la solution si on peut analyser l'exécution, plutot qu'en lisant un long pavé (qui pourrait etre raccourci, mais ce n'est pas le sujet ici).

Rechercher des sujets similaires à "texte fenetre label"