Textbox : espace insécable pendant la saisie

Résolu/Fermé
GrandJean - 21 févr. 2014 à 09:35
 GrandJean - 21 févr. 2014 à 16:08
Bonjour à tous,

Je souhaite pouvoir insérer un espace insécable lors de la saisie dans une textbox.
J'ai bien trouvé le code chr(160) mais je n'arrive pas à l'intégrer lors de la saisie.
La méthode m'intéresse car j'aimerais aussi pouvoir intégrer une puce, par exemple chr(149), en cours de saisie.

Je n'ai pas trouvé de solutions sur les forums et mes différentes tentatives...

Bref, je sollicite votre aide et vous en remercie par avance

Jean



6 réponses

f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
21 févr. 2014 à 09:57
Bonjour,

tout depend ou vous voulez mettre ces caracteres, si devant la sasie:
ex:
x = Chr(149) & Chr(160) & TextBox1
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
21 févr. 2014 à 09:58
Bonjour,

En VB ou en VBA ?
C'est surprenant d'avoir besoin spécifiquement d'une espace insécable...
Si tu veux remplacer automatiquement un caractère par un autre lors de la saisie (ou empêcher la saisie de certains caractères), utilise les codes ASCII dans la procédure :

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


A+
0
Merci à tous les deux d'avoir répondu aussi rapidement.

C'est bien en cours de frappe que je veux pouvoir utiliser ces caractères. Si ma phrase se termine par un ?, j'ai besoin d'un espace insécable pour éviter que, lors de l'utilisation du contenu dans un autre formulaire, le ? se retrouve tout seul sur une nouvelle ligne.

J'ai bien essayé avec keypress, sans succès. Je ne trouve pas le rapprochement entre chr() et keyAscii. Pardon si je m'exprime mal.

J'espère que vous aurez une piste.
0
Pardon, j'ai oublié de préciser : en Excel VBA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
21 févr. 2014 à 10:26
Un exemple pour ajouter un espace insécable avant le ? :
(adapter le code à ton besoin ; celui-ci permet d'empêcher la saisie de caractère non désirés)
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 63
        TextBox1.Value = TextBox1.Value & Chr(160)
    Case 97 To 122
        ' Caracteres alpha min

    Case 65 To 90
        'Caracteres alpha Maj

    Case 8
        'Retour Chariot

    Case Else

        KeyAscii = 0

    End Select

End Sub
0
Super.

J'ai essayé ta solution qui fonctionne très bien. Merci beaucoup.
Par contre, si elle fonctionne bien en création d'un nouveau texte, en mode correction cela ne va plus : si je reviens sur le texte et que je veuille mettre un ?, avec le select case, mon ? se retrouve en dernier caractère.
J'ai donc remplacé le select case par :
TB_1 = Replace(TB_1, " ?", Chr(160) & "?") 'pour l'espace insécable
TB_1 = Replace(TB_1, "*", Chr(149)) 'pour la puce

Là, je peux mettre mon caractère où nécessaire. Le curseur se place, cependant, en fin de texte. Mais ce n'est pas très grave.
J'aurais préféré un raccourci clavier (comme ctrl / Enter pour aller à la ligne). Je n'ai pas trouvé.

Encore merci
Jean
0
Pour résoudre la position du curseur, j'ai utilisé SelStart, ce qui donne :
PosCurseur = Me.TB_1.SelStart
TB_1 = Replace(TB_1, " ?", Chr(160) & "?")
TB_1 = Replace(TB_1, "*", Chr(149))
Me.TB_1.SelStart = PosCurseur
0