Pre-formate un textbox avec un texte déterminé pour entrer une valeur à la suite de ce texte

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 688 fois - Téléchargée 30 fois

Contenu du snippet

Débutant novice en VB, je récupère régulièrement et honteusement les idées des autres sur ce site, en strict consommateur des gestations laborieuses des génies du VB. Alors, subitement, un source mûrement réfléchi a jailli de mes réflexions. Je ne sais pas s’il existe sur le site (si oui, désolé … si non : chouette, j’ai enfin trouvé quelque chose !). Il s’agit de pré formater un textBox afin d’y inscrire une valeur à la suite d’un texte prédéfini.
Sur une forme mettez un textBox nommé Text1
Puis inscrivez le code suivant dans la form :

Source / Exemple :


Private Sub Text1_Click()

'Formate le textBox avec le mot "Période"
    If Text1.SelStart < 7 Then
    Text1.Text = "Période" & " "
    Text1.SelStart = Text1.SelStart + 8
    End If

End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)

' Inscrit le mot "période" dans le textbox
' et force le curseur après l'espace
    If Text1.SelStart < 9 Then
    Text1.Text = "Période" & " "
    Text1.SelStart = Text1.SelStart + 8
    End If
' Autorise le retour arrière et Force les caratères numériques
    If KeyAscii = 8 Then
    KeyAscii = 8
    ElseIf Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9" Then
    KeyAscii = 0
    End If

End Sub

Conclusion :


Bon, je sais, ca ne révolutionnera pas la programmation française, mais néanmoins, si ca existe déjà ... Faites moi plaisir ... ne me le dites pas ;-) Je continuerai à croire que je suis un génie! ;-)

A voir également

Ajouter un commentaire Commentaires
Messages postés
6
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
25 novembre 2003

Ah ben oui, ca marche impec. Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
il te suffirait de :

Private Sub Text1_Click()
If Text1.SelStart < 8 Then Text1.SelStart = 8
End Sub
Messages postés
6
Date d'inscription
mercredi 16 avril 2003
Statut
Membre
Dernière intervention
25 novembre 2003

ah ben oui hein! j'ai dit que j'étais débutant novice. Merci infiniment. Ceci dit, j'ai encore besoin d'explication : comment faire pour que, si je clique dans le textbox, le curseur ne puisse se retrouver au milieu du mot, mais toujours à la fin plus l'espace ? Sinon, le got focus, c'est une chouette idée. Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
Pas mal....

Pour faire EXACTEMENT la même chose, on aurait pu écrire :

Private Sub Text1_GotFocus()
If Not Text1.Text Like "Période *" Then Text1.Text = "Période "
If Text1.SelStart < 8 Then Text1.SelStart = 8
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then
If Text1.SelStart <8 Then KeyAscii 0
ElseIf KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
KeyAscii = 0
End If
End Sub

'****************************************************

bien sur, il manque encore certaines choses, comme verifier le "Format" de ce que l'on affecte par le code : si je fais Text1.text = "coucou" , ca ne respecte pas le "masque" que tu as definis.

d'autre part, tu ne bloques le presse papiers.... tu autorise le Retour Chariot (8) mais tu bloque le Copier (3) et le couper (23) et le coller(22)

j'ai fait une modification dans ton code, car il etait assez deplaisant de perdre ce que l'on tape, chaque fois que l'on clique dans le textbox...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.