Empecher l'utilisateur d'écrire des caractères alphabétiques
Résolu
glennog
Messages postés
293
Date d'inscription
Statut
Membre
Dernière intervention
-
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
glennog Messages postés 293 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Pour les besoins de mon application , je souhaiterais savoir comment faire une controle sur la saisie , afin qu'a chaque fois que l'utilisateur saisisse des caractères qui ne sont pas numériques , que ceux ci , ne soient pas notés dans mon textbox , en utilisant le code ascii
Voilà , ce que j'avais écris , mais , mon programme bugg , pourriez vous m'indiquer comment je dois m'y prendre , ??? en utilisant le code ascii des caractères ??
Pour les besoins de mon application , je souhaiterais savoir comment faire une controle sur la saisie , afin qu'a chaque fois que l'utilisateur saisisse des caractères qui ne sont pas numériques , que ceux ci , ne soient pas notés dans mon textbox , en utilisant le code ascii
Private Sub TXT_Saisie_Change() If Asc(Me.TXT_Saisie.text) < 48 Or Asc(Me.TXT_Saisie.text) > 58 Then MsgBox ("erreur") Me.TXT_Saisie.text = "" End If End Sub
Voilà , ce que j'avais écris , mais , mon programme bugg , pourriez vous m'indiquer comment je dois m'y prendre , ??? en utilisant le code ascii des caractères ??
A voir également:
- Empecher l'utilisateur d'écrire des caractères alphabétiques
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Ecrire en gras sur whatsapp - Guide
- Comment écrire # sur pc - Guide
- Écrire en majuscule - Guide
6 réponses
Bonjour,
excusez l'incruste
Pourquoi utiliser les codes ascii alors qu'on dispose de la fonction ISNUMERIC
la macro admet des nombre réels (p.e : 123,45) et efface le caractère incorrect
Michel
excusez l'incruste
Pourquoi utiliser les codes ascii alors qu'on dispose de la fonction ISNUMERIC
la macro admet des nombre réels (p.e : 123,45) et efface le caractère incorrect
Private Sub TextBox1_Change() On Error Resume Next If Not IsNumeric(Right(TextBox1, 1)) And Right(TextBox1, 1) <> "," Then MsgBox "Caractère invalide" TextBox1 = Left(TextBox1, Len(TextBox1) - 1) End If End Sub l
Michel
Bonjour,
J'ai mis un test sur quelques touches, mais il faudra en ajouter et si touche supprime ou backspace il faudra modifier l'affichage de la textbox
Bonne suite
J'ai mis un test sur quelques touches, mais il faudra en ajouter et si touche supprime ou backspace il faudra modifier l'affichage de la textbox
Private Sub TXT_Saisie_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 20 Or (KeyCode >= 16 And KeyCode <= 18) Or KeyCode = 45 Or KeyCode = 91 Then Exit Sub If KeyCode < 48 Or KeyCode > 58 Then MsgBox ("erreur") If Len(Me.TXT_Saisie.Text) > 1 Then Me.TXT_Saisie.Text = Left(Me.TXT_Saisie.Text, Len(Me.TXT_Saisie.Text) - 1) Else Me.TXT_Saisie.Text = "" End If End If End Sub
Bonne suite
Bonjour michel et bonne annee,
Petit lezard si le premier caractere est une lettre!!!
Petit lezard si le premier caractere est une lettre!!!
Re,
Excel 2003 et 2007:
Textbox sur feuille de calcul ou dans UF: si je saisie une lettre-->msgbox-->click ok---->raz textebox--->msgbox(2eme)--->click ok--->erreur execution 5: sur ligne TextBox1 = Left(TextBox1, Len(TextBox1) - 1) du fait que len..=0
excel 2007
https://www.cjoint.com/c/CAjraNO5ySB
Caisse queue cela donne chez toit??????
Excel 2003 et 2007:
Textbox sur feuille de calcul ou dans UF: si je saisie une lettre-->msgbox-->click ok---->raz textebox--->msgbox(2eme)--->click ok--->erreur execution 5: sur ligne TextBox1 = Left(TextBox1, Len(TextBox1) - 1) du fait que len..=0
excel 2007
https://www.cjoint.com/c/CAjraNO5ySB
Caisse queue cela donne chez toit??????
Effectivement! Ze lézard!
j'en suis là
testé sur l'usf; normalement pas de différence entre 2007 et 2003
j'en suis là
Private Sub TextBox1_Change() On Error Resume Next If Not IsNumeric(Right(TextBox1, 1)) And Right(TextBox1, 1) <> "," And TextBox1 <> "" Then MsgBox "Caractère invalide" TextBox1 = Left(TextBox1, Len(TextBox1) - 1) End If End Sub
testé sur l'usf; normalement pas de différence entre 2007 et 2003
Bonjour à tous,
et tous mes voeux à ceux que je n'ai pas vu.
J'peux jouer aussi ?
Je note un autre manque : possibilité de saisir 2 fois le séparateur décimal.
Autre proposition qui en plus s'adapte au séparateur décimal défini sur la machine :
Bon, bien sûr, il ne faut pas s'amuser à cliquer au milieu de la chaine pour y mettre un z ou y coller une chaine, là c'est plus cher...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
et tous mes voeux à ceux que je n'ai pas vu.
J'peux jouer aussi ?
Je note un autre manque : possibilité de saisir 2 fois le séparateur décimal.
Autre proposition qui en plus s'adapte au séparateur décimal défini sur la machine :
Private Sub TextBox1_Change() Dim n As Double On Error GoTo suite n = CDbl("0" & TextBox1) Exit Sub suite: MsgBox "Caractère invalide" TextBox1 = Left(TextBox1, Len(TextBox1) - 1) End Sub
Bon, bien sûr, il ne faut pas s'amuser à cliquer au milieu de la chaine pour y mettre un z ou y coller une chaine, là c'est plus cher...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
C'est normal que ça fasse une erreur puisque c'est le but.
Seulement en cas d'erreur on doit aller en suite: avec le On Error GoTo suite qui précède.
Bizarre que le branchement ne se fasse pas chez toi.
Rajouter on error goto 0 après le suite:
Je l'avais oublié mais ça ne semble pas poser de pb chez moi, j'en avais déduit que le traitement d'erreur se réinitialisait après le end sub mais...
eric
edit: https://www.cjoint.com/c/CAlpixmzhyT
Seulement en cas d'erreur on doit aller en suite: avec le On Error GoTo suite qui précède.
Bizarre que le branchement ne se fasse pas chez toi.
Rajouter on error goto 0 après le suite:
Je l'avais oublié mais ça ne semble pas poser de pb chez moi, j'en avais déduit que le traitement d'erreur se réinitialisait après le end sub mais...
Private Sub TextBox1_Change() Dim n As Double On Error GoTo suite n = CDbl("0" & TextBox1) On Error Goto 0 Exit Sub suite: On Error Goto 0 MsgBox "Caractère invalide" TextBox1 = Left(TextBox1, Len(TextBox1) - 1) End Sub
eric
edit: https://www.cjoint.com/c/CAlpixmzhyT
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
qui devrait être redirigée par le on error...
A part fermer excel et le relancer pour le ramener à la raison je ne vois pas.
Tant que j'y suis une version qui résiste à tout (enfin pour l'instant et chez moi ;-) ), y compris à un collé sauvage en plein milieu :
Tout ceci n'a pas l'air d'intéresser beaucoup glennog
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
A part fermer excel et le relancer pour le ramener à la raison je ne vois pas.
Tant que j'y suis une version qui résiste à tout (enfin pour l'instant et chez moi ;-) ), y compris à un collé sauvage en plein milieu :
Private Sub TextBox1_Change() Static TextBox1Sav As String Dim n As Double On Error GoTo suite n = CDbl("0" & TextBox1) On Error GoTo 0 TextBox1Sav = TextBox1 Exit Sub suite: On Error GoTo 0 MsgBox "Caractère invalide" TextBox1 = TextBox1Sav End Sub
Tout ceci n'a pas l'air d'intéresser beaucoup glennog
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Merci les gars , vous m'avez mis sur la voie , j'ai finalement vu ce que je devais faire , au fait , voilà l'option que j'ai choisi:
- comme , je devais seulement prendre en compte les caractères seulement si l"utilisateur saisissait un caractère dont le code ascii devait être compris entre 48 et 58 , mais aussi que je devais prendre le fait que l'utilisateur puisse ( supprimer ou encore mettre une virgule
alors du coup , si je faisais une condition selon laquelle si je faisais ceci
excusez du retard que j'ai mis pour vous répondre , au fait j'ai eu des soucis avec ma connexion et là , me suis connecté avec le wifi de mon école
- comme , je devais seulement prendre en compte les caractères seulement si l"utilisateur saisissait un caractère dont le code ascii devait être compris entre 48 et 58 , mais aussi que je devais prendre le fait que l'utilisateur puisse ( supprimer ou encore mettre une virgule
alors du coup , si je faisais une condition selon laquelle si je faisais ceci
if keyascii <48 or if keyascii > 58 then keyascii = 0 beep msgbox(" veuiller saisir des nombres , end ifje n'allais pas être en mésure de gerer les touches "supprimer " et " vrigule" , alors , du coup , j'ai fait :
if keyascii =48 or keyascii =49 or keyascii = 50 or keyascii = 51 or keyascii = 52 or keyascii = 53 or keyascii = 54 or keyascii = 55 or keyascii = 56 or keyascii = 57 or keyascii = 58 or keyascii = 44 or keyascii = 44 then else beep keyascii = 0 msgbox(" veuillez saisir un nombre") end ifdu coup , je pouvais gérer tous les cas (que je voulais)
excusez du retard que j'ai mis pour vous répondre , au fait j'ai eu des soucis avec ma connexion et là , me suis connecté avec le wifi de mon école