PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 oct. 2005 à 01:46
j'en étais sûr.....
attention, çà n'empêche pas le copier/coller.
et en poussant, il peut saisir aussi .,? etc....
Private Sub Text1_KeyPress(KeyAscii As Integer)
If IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
si çà ne change rien d'afficher tout en minuscule, alors il suffit de tester ainsi :
Private Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(LCase(Chr(KeyAscii)))
If ((KeyAscii < 97 Or KeyAscii > 122) And _
KeyAscii <> 8 And KeyAscii <> 32 And KeyAscii <> 224 And _
KeyAscii <> 231 And KeyAscii <> 232 And KeyAscii <> 233) _
Then KeyAscii = 0
End Sub
là tu as toutes les lettres normales, [espace], é è ç à, et la touche effacer.
à toi de tester par un simple MsgBox KeyAscii pour trouver lesquelles autres tu veux interdir
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 20 oct. 2005 à 23:53
BONSOIR....
oui, on peut, par ordre d'élimination, caractère par caractère....
voici une solution, mais mon p'tit doigt me dit que tu t'y prends mal....
si c'est par exemple pour empêcher la saisie numérique simplement, on en reparlera...
voici l'exemple VB6
Dim TabNonLettre(9) As String
'
'
Private Sub Form_Load()
TabNonLettre(0) = "0"
TabNonLettre(1) = "1"
TabNonLettre(2) = "2"
TabNonLettre(3) = "3"
TabNonLettre(4) = "4"
TabNonLettre(5) = "5"
TabNonLettre(6) = "6"
TabNonLettre(7) = "7"
TabNonLettre(8) = "8"
TabNonLettre(9) = "9"
End Sub
'
'
Private Sub Command1_Click()
If TxtChose.Text = "" Then
MsgBox "Txt vide", 32
Exit Sub
Else
Dim i As Integer, t As Integer, bLettre As Boolean
bLettre = True
For i = 1 To Len (TxtChose.Text)
For t = 0 To UBound(TabNonLettre) If Mid(TxtChose.Text, i, 1) TabNonLettre(t) Then bLettre False: GoTo FIN
Next t
Next i
End If
FIN:
If bLettre Then
MsgBox "Aucun caractère du tableau n'est dans la TxtBox", 32
Else
MsgBox "Correspondance !!!", vbCritical, "Dommage..."
End If
End Sub
'si le but est juste de 0 à 9, on peut remplacer
For t = 0 To UBound (TabNonLettre) If Mid(TxtChose.Text, i, 1) TabNonLettre(t) Then bLettre False: GoTo FIN
Next t
'par
For t = 0 To 9 If Mid (TxtChose.Text, i, 1) <gras>CStr(i) Then bLettre</gras> False: GoTo FIN
Next t
'et ne pas déclarer ni initialiser TabNonLettre()
'l'intérêt du tableau est de pouvoir ajouter facilement
'des caractères, genre / * . = etc...
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 20061 20 oct. 2005 à 23:56
JE NE sais pas si j'ai bien compri.
tu veux savoir si ce que tu tape est numérique ou non numérique?
voici un code qui vérifie si dans le champ text, que j'ai appelé ici Text1, si tu rentres que les chiffres.
dans ce cas, si tu rentres une lettre, quelqu'elle soit, la lettre ne sera pas prise en compte. et il ya Beep pour remarquer cela.
rien de spécial.
j'espère que ca répond a ta question.
si non, repose clairement
Private Sub Text1_KeyPress(KeyAscii As MSForms.ReturnInteger)
' Contrôle la validité de la saisie (seul les chiffres passent)
If (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) And KeyAscii <> 8 Then
Fau:
Beep
' Erreur : supprime le caractère
KeyAscii = 0
End If
Fin:
End Sub
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 20061 21 oct. 2005 à 00:04
Comme d'habitude, pcpt passes devant moi.
je n'avais pas rafraichi.
Bonsoir Pcpt, et Ploki
Pour ce que tu as dit:
si c'est par exemple pour empêcher la saisie numérique simplement, on en reparlera...
j'ai déja donné une manière de faire.
Mais, ici, "Fin:" devait être en commentaire " 'Fin " Même si il ne derrange pas ici, il ne sert a rien en etiquette.
Vous n’avez pas trouvé la réponse que vous recherchez ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 21 oct. 2005 à 00:29
rebonsoir P_Romeo
désolé de souvent te devancer, c'est involontaire^^
pour ton code, je crois que Ploki veut l'inverse (interdire la saisie numérique), donc ton code est très facilement adaptable.
pour le paramètre par contre? MSForms.ReturnInteger ?? tu es en .net? VBA ? ou un composant Form2 ?
(juste par curiosité, çà ne change rien...)
et pour l'étiquette Fin: , je précise juste à Ploki que P_Romoe parlait de la sienne, qui en effet n'est pas appelée.
la mienne quant à elle, du même nom, permet de sortir de la boucle dès le "caractère interdit" trouvé.
si le texte est "0blabla", inutile tout vérifier, l'erreur existe déjà...
ploki122
Messages postés48Date d'inscriptionmercredi 21 septembre 2005StatutMembreDernière intervention20 décembre 2005 21 oct. 2005 à 00:50
ok je m'était mal expliquer, voila tout : je fais un bonhomme pendu et j'aimerais que lorsqu'il m'écrit un caratère "non-lettrique", une erreur s'affiche
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 20061 21 oct. 2005 à 02:10
Pcpt>> j'utilsises le Composant Form2
et confirme tes mots qand à "Fin".
je pense que ta réponse n'est pas assez claire.
le gris n'est pas trop visible sur le blanc (Lol)
Ploki>> tu es entre de bonne mains.
mais, pcpt, tu veilles trop ces temps ci. je lis certains de tes messages, ils datent de l'aube. ne grilles pas tous tes neurones. gardes en pour les travaux professionel (et un peu pour si j'ai un problème) :)
P__ROMEO
Messages postés294Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 9 mars 20061 21 oct. 2005 à 02:33
bien sur qu'il ya des interessés.
Ploki dors surement en se moment. sa sera pour demain la cloture de se topic.
Bonne programmation pour tes bricoles
et bonne continuation, pour ton prochain poste.