Bonsoir,
En fait, l'action sur Entrée dans la TextBox introduit vbCrLf, soit 2 caractères, il y a donc intérêt à s'aligner sur la propositions de jibouchou, mais également d'opérer de même quand tu introduis le nom...
Private Sub CheckBox1_Click()
Dim rep, tx As String
If Me.CheckBox1 = True Then
rep = Application.InputBox("Indiquez votre nom", "Nom", Type:=2)
If rep = "" Or rep = False Then
Me.CheckBox1 = False
Exit Sub
Else
Libellé = "Nom : " & rep
If Me.TextBox1 = "" Then
Me.TextBox1 = Libellé
Else
Me.TextBox1 = Me.TextBox1 & vbCrLf & Libellé
End If
drapeau = True
End If
Else
If drapeau = True Then
tx = Me.TextBox1.Text
tx = Replace(Replace(tx, Libellé, ""), vbCrLf & vbCrLf, vbCrLf)
If InStr(1, tx, vbCrLf) = 1 Then tx = Replace(tx, vbCrLf, "", 1, 1)
Me.TextBox1.Text = tx: Libellé = "": drapeau = False
End If
End If
End Sub
Inutile de tester si ta chaîne contient Libellé, c'est drapeau qui te le confirme (mais ne pas oublier de le ramener à False et d'effacer Libellé). Par contre, si le nom a été mis en tête de liste, il faut tester sa présence éventuelle pour l'éliminer.
Autre modification : déclaration de rep en Variant. Quand on appuie sur Annuler, InputBox renvoie False, en ne le testant pas, tu verrais s'inscrire : Nom : Faux. Le test "" est le cas de validation du nom sans en mettre ("" n'est pas identique à vbNullString).
Cordialement.