Changer une partie du contenu d'une textbox

Bonjour,

J'ai une textbox avec un contenu fixe et un contenu que je souhaiterais variable grâce a des checkbox.

Ex simplifié:

Aujourd'hui:

- le temps est sec (a)

  • le temps est humide (b)
  • il fait froid (c)
  • il fait chaud (d)
  • il y a du vent (e)

Bonne journée

Le texte en rouge est constant et le texte en bleu est variable selon la checkbox coché.

J'arrive à afficher cela jusqu'à là mais c'est dans le cas où ce n'est pas cocher que je ne trouve pas la solution pour ne pas afficher le nom de la checkbox et ne pas avoir de saut de lignes entre les tirets.

Sachant que le nombre de paramètres variables est beaucoup plus important, est il possible de faire cela sans faire toutes les combinaisons possible du genre: a, b, c, d, e, ab, abc, abcd, abcde, ade, adc, acde, ae, be, cd, ce etc...

Merci d'avance pour votre aide.

Bonsoir,

Fichier avec ton code à voir...

Cordialement.

Re,

Le code est simple pour le moment:

TextBox1.value = "Aujourd'hui" & Chr(10) & CheckBox1.caption & Chr(10) & CheckBox2.caption & Chr(10) & CheckBox3.caption & Chr(10) & CheckBox4.caption & Chr(10) & "" & Chr(10) & "Bonne journée"

Les checkbox portent le nom des éléments variables. J'ai fait comme ça pour le moment mais il y a peut être plus facile en faisant différemment. Je débute en vba

Si ton contenu dépend de CheckBox, le moins est de tester leur valeur ! Une petite boucle...

J'avais mis dans la partie checkbox:

Private Sub CheckBox1_Click()

If CheckBox1.value = true then

checkbox1.caption = "le temps est sec"

elseif checkbox1.value = false then

checkbox1.caption = ""

Le problème est que lorsque que je décoche la checkbox elle n'a plus son nom et cela ne répond pas au problème du saut de ligne en cas de case non coché.

C'est de quelque chose comme cela que tu parles comme boucle ?

Tu confonds nom et libellé.

Et le libellé tu le places à la conception, et il demeure ! A l'exécution tu t'en sers ! Ce dernier code est hors sujet.

J'ai pas compris ce que tu voulais dire avec les noms et libellés, est ce que tu vois où est le problème dans ce que j'ai fait ?

Le nom c'est CheckBox1, le libellé (Caption) c'est "le temps est sec".

Pas de problème dans ce que tu fais, sauf que ce n'est pas ce que tu veux faire... !

Ah d'accord,

En fait j'arrive pas à trouver comment faire ce que je veux vu que je connais peu de chose en vba je suis limité niveau possibilité et je ne trouve pas de sujet traitant d'un problème similaire.

Le problème du nom du bouton je peux le régler mais c'est toujours le saut de ligne vide en cas de case non coché qui pose problème.

Comme je l'ai déjà dit, mets ton fichier avec le code... On regardera.

Voilà le fichier, le problème est donc que le bouton où est indiquer le paramètre perd son nom lorsque je décoche la case et que je n'arrive pas à enlever le saut de ligne lorsqu'un paramètre disparaît.

ex: si a, c et d sont cochés j'obtiens

Aujourd'hui :

a

c

d

alors que je voudrais:

Aujourd'hui :

a

c

d

6temps.xlsm (31.04 Ko)

J'ai trouvé ce système là qui peut répondre au premier problème d'affichage du nom de la checkbox mais je ne trouve pas de solution pour les lignes vides.

10temps-2.xlsm (31.69 Ko)

Bonjour,

Proposition :

Sub Message()
    Dim msg$, i%
    msg = "Aujourd'hui :" & Chr(10)
    For i = 1 To 4
        With Me.OLEObjects("CheckBox" & i).Object
            If .Value Then
                msg = msg & .Caption & Chr(10)
                .ForeColor = vbBlack
            Else
                .ForeColor = vbWhite
            End If
        End With
    Next i
    msg = msg & Chr(10) & "Bonne journée."
    Me.TextBox1.Value = msg
End Sub

Private Sub CheckBox1_Click()
    Message
End Sub

Private Sub CheckBox2_Click()
    Message
End Sub

Private Sub CheckBox3_Click()
    Message
End Sub

Private Sub CheckBox4_Click()
    Message
End Sub

Là le bouton ne sert plus !

Si tu veux rafraîchir à l'aide du bouton, tu supprimes les 4 proc. CheckBox et tu rétablis la proc. bouton :

Private Sub CommandButton1_Click()
    Message
End Sub

Cordialement.

15ank-temps.xlsm (30.08 Ko)

Un mot : Parfait

Ce que tu m'as fait répond parfaitement à ce que j'attendais au niveau des sauts de lignes.

J'ai juste supprimé la partie:

.ForeColor = vbBlack

Else

.ForeColor = vbWhite

car je veux que la case à cocher garde son nom.

Merci beaucoup de ton aide et de ta rapidité.

Tu es sûr de ce que tu as fait !

D'une part le libellé (Caption) n'est pas le nom. Le nom c'est CheckBox1 à 4.

Ensuite, le libellé n'était justement pas modifié, contrairement à ce que tu faisais auparavant. On faisait juste passer l'a couleur de l'inscription du noir au blanc et vice-versa (ForeColor, c'est la couleur de premier plan).

En fait j'utilise pas les bon mots.

Je ne veux pas que la checkbox et le texte de la checkbox soit toute blanche une fois coché ou décoché.

Je veux que le texte de la checkbox reste tout le temps et qu'on le voit.

Ok !

Rechercher des sujets similaires à "changer partie contenu textbox"