OVH Cloud OVH Cloud

Code pour TextBox

41 réponses
Avatar
David
Bonjour/soir

Comment activer ou désactiver la touche Majuscule en VB ?

Je m'explique

A l'arrivée d'un TextBox dans un UserForm, j'aimerais qu'une fonction active
la touche majuscule et qu'à la sortie de ce textBox la touche majuscule soit
désactiver.

Deux autres questions

Comment obliger un utilisateur à rentrer dans un TextBox un format numérique
?

Comment obliger un utilisateur à rentrer dans un TextBox un montant en euros
(format 122,54 ?) en tapant juste 122.54 (point) ou 122,54 (virgule) ?

Un grand merci pour vos réponses et votre aides

Bonne soirée


David

10 réponses

1 2 3 4 5
Avatar
Ilan
essaie ce code pour l'exemple ma zone de texte s'appelle TEXTE0

Sub Texte0_AfterUpdate
Texte0.ValueÍbl(texte0.value)
End sub

Sub Texte0_KeyPress (Keyascii As integer)
If KeyasciiD then keyasciiF 'Remplace le point par la virgule
If keyasciiF then
If instr(1,texte0.text,chr(46))>0 then keyascii=0
End if
If KeyAscii <> 10 And KeyAscii <> 13 And KeyAscii <> 8 And KeyAscii <> 46
And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0
End sub

Chez moi, le point n'est pas pris en compte donc je le remplace par la virgule



Bonjour Isabelle

On peux faire un point mais pas une virgule d'ou ma question :

Comment faire une virgule avec cette cette fonction

Merci





Avatar
David
Cela donne :

Incompatibilité de type Erreur d'execution 13

dans

Private Sub TextBox1_AfterUpdate()
TextBox1.Value = CDbl(TextBox1.Value)
End Sub
Avatar
Ilan
Ah! c'est quoi le contenu de Textbox1 ?
Quel est le symbol decimal declare dans Panneau de Configuration
|_ Options
Regionales

essai une de ces conversions
CDec(TextBox1) - CLng(TextBox1) - CCur(TextBox1)
essaie aussi sans conversion




Cela donne :

Incompatibilité de type Erreur d'execution 13

dans

Private Sub TextBox1_AfterUpdate()
TextBox1.Value = CDbl(TextBox1.Value)
End Sub





Avatar
michdenis
Bonjour David,

Question 1

Pour mettre tout en majuscule dans le textbox
'---------------------
Private Sub TextBox1_Change()

Dim A As Variant
A = Me.TextBox1
A = UCase(A)
Me.TextBox1 = A

End Sub
'---------------------


Question 2 la saisie d'un format numérique :


Voici je t'ai fait une fonction qui se charge de limiter :

A ) la saisie aux chiffres seulement.

B ) la saisie que de 1 séparateur décimal , virgule ou point
dans la boîte de saisie et ce d'après le système en vigueur
sur la machine.

C ) Cette fonction peut servir à un nombre indéterminé de textbox
de ton formulaire.

D ) En copiant cette fonction dans un module standard, elle peut être
utilisé pour tous les formulaires de ton projet qui ont le même besoin.

Pour appeler la fonction pour chaque texbox voici le code à saisir :

----------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

KeyAscii = CheckLaSaisie(TextBox1, KeyAscii)

End Sub
------------------

Voici la fonction à copier dans un module standard

------------------
Function CheckLaSaisie(Textbox As MSForms.Textbox, ByVal Char As Integer)

Dim SepDec As String
SepDec = Application.International(xlDecimalSeparator)

If Char = 44 Or Char = 46 Then
If InStr(1, Textbox, SepDec, vbTextCompare) > 0 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Asc(SepDec)
End If
Else
If Char < 48 Or Char > 58 Then
CheckLaSaisie = 0
Else
CheckLaSaisie = Char
End If
End If

End Function
-------------------------------------


Salutations!



"David" <(Pas de Spam) a écrit dans le message de
news:
Bonjour/soir

Comment activer ou désactiver la touche Majuscule en VB ?

Je m'explique

A l'arrivée d'un TextBox dans un UserForm, j'aimerais qu'une fonction active
la touche majuscule et qu'à la sortie de ce textBox la touche majuscule soit
désactiver.

Deux autres questions

Comment obliger un utilisateur à rentrer dans un TextBox un format numérique
?

Comment obliger un utilisateur à rentrer dans un TextBox un montant en euros
(format 122,54 ?) en tapant juste 122.54 (point) ou 122,54 (virgule) ?

Un grand merci pour vos réponses et votre aides

Bonne soirée


David
Avatar
isabelle
est que comme ça, ca irait.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "0.00")
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'remplacer 46 par 44 pour la virgule
texte = TextBox1.Value & Chr(KeyAscii)
If Not IsNumeric(Chr(KeyAscii)) Then
If KeyAscii = 46 Then
For i = 1 To Len(texte)
If Mid(texte, i, 1) = "." Then x = x + 1
If x > 1 Then
KeyAscii = 0
Exit For
End If
Next
Else
KeyAscii = 0
End If
End If
End Sub

isabelle


Cela donne :

Incompatibilité de type Erreur d'execution 13

dans

Private Sub TextBox1_AfterUpdate()
TextBox1.Value = CDbl(TextBox1.Value)
End Sub


Avatar
David
Re Isabelle

Désolé pour cette réponse tardive, je suis de garde donc partis en
intervention

Merci pour cette réponse mais "texte" variable non défini

sinon le code de michdenis à l'air de me convenir

encore merci
Avatar
David
Bonsoir
Désolé pour le retard dans ma réponse du à des contrainte pro.

Question 1, pas de problème

Question 2 Un grand merci, cela fonctionne presque parfaitement !!!
Quand j'appui sur la touche "point" cela me mets une virgule (impec) et
quand j'appui sur la touche "virgule" cela n'inscrit rien. J'aimerais que
cela inscrive également une "virgule".
En clair, que l'on actionne "point" ou "virgule" cette action doit mettre
une "virgule".

Encore merci
Avatar
David
Après plusieurs essai, erreur de ma part

Donc

Une virgule doit ce mettre après appuis sur "point" (c'est bon), sur
"virgule" (c'est bon) mais aussi sur ? et sur ;
Avatar
David
Désolé j'ai envoyé dans ta bal perso par erreur
Avatar
isabelle
ajoute la ligne suivante à la macro,

Dim texte As String,

isabelle


Re Isabelle

Désolé pour cette réponse tardive, je suis de garde donc partis en
intervention

Merci pour cette réponse mais "texte" variable non défini

sinon le code de michdenis à l'air de me convenir

encore merci


1 2 3 4 5