OVH Cloud OVH Cloud

textbox sans scrolling

5 réponses
Avatar
Alain
J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.

5 réponses

Avatar
Corona
Bonjour Alain,
Pour bloquer l'encodage à la taille du TextBox, il suffit de mettre une
valeur à la propriété MaxLenght.
Tu peux aussi le calculer automatiquement (pour police 'Tahoma' taille
8)
Private Sub UserForm_Initialize()
Me.TextBox1.MaxLength = Int(Me.TextBox1.Width / 5)
End Sub
Philippe

"Alain" a écrit dans le message de news:

J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.



Avatar
Alain
J'y ai pensé au MaxLength.
Malheureusement, ça ne marche pas.
Si je ne me trompe pas MaxLength permet de spécifier le nombre maximum de
caractères mais, dans mon textbox, l'utilisateur peut faire des <enter> pour
faire des paragraphes. Donc, dans certain cas, il peut y avoir très peu de
caractères mais répartis sur de nombreuses lignes et, dans d'autres cas,
beaucoup de caractères répartis sur très peu de lignes. Comment alors définir
un MaxLength ?

Merci pour votre réponse.
Alain.



Bonjour Alain,
Pour bloquer l'encodage à la taille du TextBox, il suffit de mettre une
valeur à la propriété MaxLenght.
Tu peux aussi le calculer automatiquement (pour police 'Tahoma' taille
8)
Private Sub UserForm_Initialize()
Me.TextBox1.MaxLength = Int(Me.TextBox1.Width / 5)
End Sub
Philippe

"Alain" a écrit dans le message de news:

J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.








Avatar
Corona
Maxlenght spécifie effectivement le nombre maximum de caractères à encoder.
Si vous permettez les <enter>, cette propriété ne contrôle pas la hauteur de
la textbox.
Dans l'état actuel de mes connaissances, je ne connais pas de propriété dans
TextBox permettant ce contrôle.
Mais il y a certainement moyen de le faire en VBA dans la procédure
'TextBox1_Change'
Pour empêcher la remontée de texte, il faudrait calculer le nombre de retour
chariot et faire un algorithme par rapport à la taille et à la hauteur de la
TextBox et modifier MaxLenght dynamiquement.
Philippe

"Alain" a écrit dans le message de news:

J'y ai pensé au MaxLength.
Malheureusement, ça ne marche pas.
Si je ne me trompe pas MaxLength permet de spécifier le nombre maximum de
caractères mais, dans mon textbox, l'utilisateur peut faire des <enter>
pour
faire des paragraphes. Donc, dans certain cas, il peut y avoir très peu de
caractères mais répartis sur de nombreuses lignes et, dans d'autres cas,
beaucoup de caractères répartis sur très peu de lignes. Comment alors
définir
un MaxLength ?

Merci pour votre réponse.
Alain.



Bonjour Alain,
Pour bloquer l'encodage à la taille du TextBox, il suffit de mettre
une
valeur à la propriété MaxLenght.
Tu peux aussi le calculer automatiquement (pour police 'Tahoma'
taille
8)
Private Sub UserForm_Initialize()
Me.TextBox1.MaxLength = Int(Me.TextBox1.Width / 5)
End Sub
Philippe

"Alain" a écrit dans le message de
news:

J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie
visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.










Avatar
Corona
Alain,
Supposons que tu souhaites que l'utilisateur puisse encoder 40
caractères maximum sur un maximum de 2 lignes.
Ce bout de code devrait répondre à ton attente.
Bien entendu, il faut mettre la bonne hauteur à ta textbox
Philippe
================ Le code ======== Option Explicit
Dim MaxLine As Integer
Private Sub TextBox1_Change()
Select Case Me.TextBox1.LineCount
Case Is > MaxLine
Me.TextBox1 = Left$(Me.TextBox1, Len(Me.TextBox1) - 2)
End Select
End Sub

Private Sub UserForm_Initialize()
With Me.TextBox1
.MaxLength = 40
.MultiLine = True
.WordWrap = True
End With
MaxLine = 2
End Sub
================================================
"Alain" a écrit dans le message de news:

J'y ai pensé au MaxLength.
Malheureusement, ça ne marche pas.
Si je ne me trompe pas MaxLength permet de spécifier le nombre maximum de
caractères mais, dans mon textbox, l'utilisateur peut faire des <enter>
pour
faire des paragraphes. Donc, dans certain cas, il peut y avoir très peu de
caractères mais répartis sur de nombreuses lignes et, dans d'autres cas,
beaucoup de caractères répartis sur très peu de lignes. Comment alors
définir
un MaxLength ?

Merci pour votre réponse.
Alain.



Bonjour Alain,
Pour bloquer l'encodage à la taille du TextBox, il suffit de mettre
une
valeur à la propriété MaxLenght.
Tu peux aussi le calculer automatiquement (pour police 'Tahoma'
taille
8)
Private Sub UserForm_Initialize()
Me.TextBox1.MaxLength = Int(Me.TextBox1.Width / 5)
End Sub
Philippe

"Alain" a écrit dans le message de
news:

J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie
visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.










Avatar
Corona
Une petite erreur de programmation.
Ce code est correct (du moins j'espère). J'avais oublié de tester si le
dernier caractère reçu était un 'line feed' dans le cas contraire, il ne
faut enlever qu'un caractère.
Philippe

Option Explicit
Dim MaxLine As Integer
Private Sub TextBox1_Change()
Select Case Me.TextBox1.LineCount
Case Is > MaxLine
If Right$(Me.TextBox1, 1) = Chr$(10) Then
Me.TextBox1 = Left$(Me.TextBox1, Len(Me.TextBox1) - 2)
Else
Me.TextBox1 = Left$(Me.TextBox1, Len(Me.TextBox1) - 1)
End If
End Select
End Sub

Private Sub UserForm_Initialize()
With Me.TextBox1
.MaxLength = 80
.MultiLine = True
.WordWrap = True
End With
MaxLine = 2
End Sub


"Alain" a écrit dans le message de news:

J'y ai pensé au MaxLength.
Malheureusement, ça ne marche pas.
Si je ne me trompe pas MaxLength permet de spécifier le nombre maximum de
caractères mais, dans mon textbox, l'utilisateur peut faire des <enter>
pour
faire des paragraphes. Donc, dans certain cas, il peut y avoir très peu de
caractères mais répartis sur de nombreuses lignes et, dans d'autres cas,
beaucoup de caractères répartis sur très peu de lignes. Comment alors
définir
un MaxLength ?

Merci pour votre réponse.
Alain.



Bonjour Alain,
Pour bloquer l'encodage à la taille du TextBox, il suffit de mettre
une
valeur à la propriété MaxLenght.
Tu peux aussi le calculer automatiquement (pour police 'Tahoma'
taille
8)
Private Sub UserForm_Initialize()
Me.TextBox1.MaxLength = Int(Me.TextBox1.Width / 5)
End Sub
Philippe

"Alain" a écrit dans le message de
news:

J'ai un document avec un textbox.
J'aimerai que l'encodage, dans ce textbox, soit limité à la partie
visible
de ce textbox;
autrement dit, j'aimerai qu'il n'y ait pas de scrolling automatique
lorsqu'on arrive à la fin de la zone visible de ce textbox.
Est-ce possible ?

Merci d'avance pour votre aide.
Alain.