Probleme textbox
Résolu
vincent
-
vincent -
vincent -
Bonjour,
j'ai un textbox multiligne ou je voudrais ecrire seulement 3 lignes.
Le probleme c'est que lorsque j'appuie sur entree sa passe quand meme a la ligne suivante.
Je voudrais en gros annuler l'effet de la touche entree et positionner le curseur sur la 3eme ligne la ou l'utilisateur s'est arrété d''écrire
Pour l'instant j'ai ça :
Dim NbLignes_Commentaires As String
NbLignes_Commentaires = UBound(Split(TextCommentaire.Text, vbCrLf))
If (NbLignes_Commentaires > 2) Then
End If
j'ai essayé avec selectionStart pour repositionner le curseur mais sans succes...
merci de vos réponses
j'ai un textbox multiligne ou je voudrais ecrire seulement 3 lignes.
Le probleme c'est que lorsque j'appuie sur entree sa passe quand meme a la ligne suivante.
Je voudrais en gros annuler l'effet de la touche entree et positionner le curseur sur la 3eme ligne la ou l'utilisateur s'est arrété d''écrire
Pour l'instant j'ai ça :
Dim NbLignes_Commentaires As String
NbLignes_Commentaires = UBound(Split(TextCommentaire.Text, vbCrLf))
If (NbLignes_Commentaires > 2) Then
End If
j'ai essayé avec selectionStart pour repositionner le curseur mais sans succes...
merci de vos réponses
2 réponses
Bonjour,
Le code suivant est en VBA.
Les contrôles TextBox ont une propriété LineCount qui retourne ... le nombre de lignes.
Tu veux, que l'utilisateur ne puisse pas saisir de 4ème ligne. Il faut donc lui dire, si le LineCount est supérieur à 3 alors supprime le derniers caractère saisi.
ça se traduit par :
Le code suivant est en VBA.
Les contrôles TextBox ont une propriété LineCount qui retourne ... le nombre de lignes.
Tu veux, que l'utilisateur ne puisse pas saisir de 4ème ligne. Il faut donc lui dire, si le LineCount est supérieur à 3 alors supprime le derniers caractère saisi.
ça se traduit par :
Private Sub userForm_Initialize()
With TextBox1
.MultiLine = True
.EnterKeyBehavior = True
End With
End Sub
Private Sub TextBox1_Change()
If TextBox1.LineCount > 3 Then
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 2)
End If
End Sub
merci de ta reponse pijaku,
alors j'ai reussi ce que je voulais faire avec le code suivant :
par contre il me sort un caractere ascii !!! je ne sais pas d'ou il vient
en gros il me fait bien le travail mais il le fait en 2 temps, il passe 2 fois dans la boucle et je ne sais pas trop pourquoi !
alors j'ai reussi ce que je voulais faire avec le code suivant :
Dim NbLignes_Commentaires As String = TextCommentaire.Lines.Length
Dim Taille As Integer = TextCommentaire.TextLength
If (NbLignes_Commentaires > 3) Then
MsgBox(" You can not write more than 3 lines of comments")
TextCommentaire.Text = TextCommentaire.Text.Remove(Taille - 1)
TextCommentaire.SelectionStart = Taille
End If
par contre il me sort un caractere ascii !!! je ne sais pas d'ou il vient
en gros il me fait bien le travail mais il le fait en 2 temps, il passe 2 fois dans la boucle et je ne sais pas trop pourquoi !
il passe 2 fois dans la boucle et je ne sais pas trop pourquoi
Si tu as placé ton code dans l'événement Change de ton textbox, c'est normal qu'il le fasse deux fois.
1ère fois lorsque tu dépasses 3 lignes
2ème lorsqu'il effectue la correction (TextCommentaire.Text.Remove(Taille - 1)). Ben oui, ton textbox change à nouveau...
Une possibilité est de placer une variable boolean publique comme ceci :
'Haut du module
Public Test As Boolean
Private Sub TextBox1_Change()
Dim NbLignes_Commentaires As String = TextCommentaire.Lines.Length
Dim Taille As Integer = TextCommentaire.TextLength
If Test = True Then Test = False: Exit Sub
If (NbLignes_Commentaires > 3) Then
MsgBox(" You can not write more than 3 lines of comments")
TextCommentaire.Text = TextCommentaire.Text.Remove(Taille - 1)
TextCommentaire.SelectionStart = Taille
Test = True
End If