Probleme textbox
Résolu/Fermé
A voir également:
- Probleme textbox
- Vba textbox date format dd/mm/yyyy ✓ - Forum Excel
- Textbox date ✓ - Forum VB / VBA
- Format textbox vba ✓ - Forum VB / VBA
- Textbox backcolor - Forum VB / VBA
- Vba textbox ✓ - Forum VB / VBA
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
9 sept. 2013 à 14:03
9 sept. 2013 à 14:03
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 !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
9 sept. 2013 à 15:17
9 sept. 2013 à 15:17
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...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
9 sept. 2013 à 15:35
9 sept. 2013 à 15:35
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
9 sept. 2013 à 15:50
9 sept. 2013 à 15:50
Tu l'as testée en mettant un point d'arrêt pour voir ce qui se passe?