VBA - Label selon condition

Bonjour , j'ai 3 textbox :

texbox_1 ; texbox_2 ; texbox_3

et je voudrais lorsque qu'une ou plusieurs des textbox soit pleines combiner en fonction de celles ci et afficher le résultat sur le label60

exemple : si textbox_1 2 et 3 vides Label60 = "-"

si texbox_1 plein et 2 et 3 vides Label60 = " 1 "

si texbox_1 plein et 2 plein et 3 vide Label60 = " 1 + 2 "

si texbox_1 plein et 2 plein et 3 plein Label60 = " 1 + 2 + 3 "

selon textbox etc..

Label60 = " 2 + 3 "

Label60 = " 1 + 3 "

Label60 = " 2"

Label60 = " 3"

J'ai commencé par ceci mais ça fonctionne pas

Private Sub textbox_1 Change()

t1=textbox_1
t2=textbox_2
t3=textbox_3

If t1 = "" And t2= "" And t3 = ""  Then    ' si tous vide on ecrit ça

Label60 = "-"

End if

If t1 <> "" And t2= "" And t3 = ""  Then    ' si tous vide  sauf t1 on ecrit ça

Label60 = " 1 "

End if

'..... et je continu jusqu' a avoir toutes les combinaisons 

Une petite idée ? Merci d'avance.

Bonsoir,

Quelque chose comme ça :

Sub tbChange()
    Dim tbx, i%
    For i = 1 To 3
        If Controls("TextBox" & i).Value <> "" Then tbx = tbx & " " & i
    Next i
    If Trim(tbx) <> "" Then
        tbx = Split(Trim(tbx))
        tbx = Join(tbx, " + ")
    Else
        tbx = "-"
    End If
    Label1.Caption = tbx
End Sub

Private Sub TextBox1_AfterUpdate()
    tbChange
End Sub

Private Sub TextBox2_AfterUpdate()
    tbChange
End Sub

Private Sub TextBox3_AfterUpdate()
    tbChange
End Sub

Cordialement.

Bonjour , MFerrand merci pour ta réponse qui dans ce cas précis fonctionne mais j'aimerai pouvoir avoir un exemple plus facile à faire évoluer.

Je m'explique :

A la place de texbox_1 je fais évoluer et je met une combobox_amis

La textbox_2 je l'appelle texbox_jour_anniversaire

la texbox_3 je met texbox_lieu ou voir même texbox_32

Ton exemple et nickel je le garde mais je voudrais un code plus souple , si je puis dire.

Merci et le salutations à nos amis de la Réunion !!!

Bonjour,

La solution est souple... ! Le plus simple est de nommer tes contrôles concernés avec un nom générique commun (quels que soient les contrôles) et un numéro d'ordre : 1 2 3. Là, la procédure ne change pas.

Si tu souhaites toutefois les nommer autrement (bien que je ne vois pas ce qui l'impose), tu ajoutes à la procédure une variable type Variant, par exemple Ctl à laquelle tu affectes un tableau des noms des contrôles :

Sub tbChange()
    Dim tbx, Ctl, i%
    Ctl = Split("combobox_amis texbox_jour_anniversaire texbox_lieu")
    For i = 1 To 3
        If Controls(Ctl(i - 1)).Value <> "" Then tbx = tbx & " " & i
    Next i
    If Trim(tbx) <> "" Then
        tbx = Split(Trim(tbx))
        tbx = Join(tbx, " + ")
    Else
        tbx = "-"
    End If
    Label1.Caption = tbx
End Sub

L'adaptation est donc extrêmement facile et rapide...

Cordialement.

Hello, merci de ta réponse purée tu gères !!!

Mais comme un noob que je suis .... je me suis mal exprimé... désolé de mon incompétence en la matière je débute et j'ai soif de comprendre .

Quand je disais 1 + 2+ 3 il n'y avait rien de mathématique lol

Par exemple je voudrais afficher dans le label : jour + date + lieu ou jour - date - lieu

Désolé

Merci.

Si tu veux autre chose que " + ", il faut mettre cette autre chose !

Pas compliqué :

        tbx = Join(tbx, " - ")

et ça change de séparateur...

Pour mettre les valeurs des contrôles au lieu de 1 2 3 :

        If Controls(Ctl(i - 1)).Value <> "" Then tbx = tbx & " " & Controls(Ctl(i - 1)).Value

Yep t'es trop fort !!!

Mille merci

Rechercher des sujets similaires à "vba label condition"