Limiter le nombre de ligne d'une TextBox
Bonjour cher Forum!
Il m'a semblé déjà avoir trouvé la solution, mais je ne la retrouve plus et ce que je vois ne répond pas à ce que j'aimerais; je vous explique!
J'ai une TextBox17 qui est Multiline et dont la EnterKeyBehavior est activé (True). Ce que je voudrais c'est limité le nombre de line de la TextBox à 28. Pour être plus précis, je voudrais que rendu à la ligne 28 il ne soit plus possible de continuer ou d'ajouter des lignes même si on n'écrit plus rien.
Ce que j'ai pu trouvé est le clavier est désactivé lorsqu'on arrive à la limite de ligne toute fois il met possible d'ajouter des lignes avec Enter, sauf que je ne peux plus faire de saisie sur les lignes plus haute...
Pouvez m'aider? :)
Bonjour CedL
Si les lignes à comptabiliser sont bien séparées par un retour à la ligne "Entrée", on peut utiliser
' Limiter à 10 lignes
Private Sub TextBox17_Change()
Dim Ind As Integer, TabTxt() As String, sTmp As String
' Si textbox vide, on sort
If Me.TextBox17 = "" Then Exit Sub
' Sinon éclater le contenu dans un tableau avec le caractère de retour à la ligne
TabTxt = Split(Me.TextBox17, Chr(10))
' Si le nombre de ligne est supérieur à 10
If UBound(TabTxt) > 10 Then
sTmp = ""
' On remprend le s10 premières lignes
For Ind = 0 To 9
sTmp = sTmp & TabTxt(Ind) & Chr(10)
Next Ind
Me.TextBox17.Value = sTmp
End If
End Sub
S'il s'agit de texte saisi au kilomètre, alors là, je ne sais pas
A+
Rebonjour!
Finalement, j'ai trouvé quelque chose qui fait mon bonheur je vous partage le code si jamais :
Private Sub TextBox17_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox17.LineCount > 27 Then
KeyAscii = 0
MsgBox "Vous avez atteind le nombre maximal de ligne. Vous devez supprimer les lignes en surplus pour pouvoir continuez.", , "Caractères maximums"
Else
End If
End Sub
Merci!
Bonsoir CedL, BrunoM45,
On peut aussi compléter avec un avertissement couleur que l'on est arrivé sur la dernière ligne acceptée.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Multiligne = True
If TextBox1.LineCount > 26 Then TextBox1.BackColor = RGB(250, 230, 215)
If TextBox1.LineCount > 27 Then
TextBox1.BackColor = RGB(255, 255, 255)
KeyAscii = 0
MsgBox "Vous avez atteind le nombre maximal de ligne. Vous devez supprimer les lignes en surplus pour pouvoir continuez.", , "Caractères maximums"
Else
End If