Empecher l'utilisateur d'écrire des caractères alphabétiques
Résolu/Fermé
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
-
9 janv. 2013 à 11:04
glennog Messages postés 293 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 19 novembre 2013 - 14 janv. 2013 à 11:42
glennog Messages postés 293 Date d'inscription jeudi 3 janvier 2013 Statut Membre Dernière intervention 19 novembre 2013 - 14 janv. 2013 à 11:42
A voir également:
- Empecher l'utilisateur d'écrire des caractères alphabétiques
- Caractères ascii - Guide
- Ecrire en gras sur whatsapp - Guide
- Caractères spéciaux clavier azerty - Guide
- Ecrire en miroir - Guide
- Caractères spéciaux - Guide
6 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
Modifié par michel_m le 9/01/2013 à 14:44
Modifié par michel_m le 9/01/2013 à 14:44
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
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
9 janv. 2013 à 11:36
9 janv. 2013 à 11:36
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
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
9 janv. 2013 à 15:05
9 janv. 2013 à 15:05
Bonjour michel et bonne annee,
Petit lezard si le premier caractere est une lettre!!!
Petit lezard si le premier caractere est une lettre!!!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
9 janv. 2013 à 15:59
9 janv. 2013 à 15:59
Bonjour f89
je viens d'essayer, j'ai pas trouvé de lézard m^me un petit ;o)
j'ai dû manquer quelque chose ?
je viens d'essayer, j'ai pas trouvé de lézard m^me un petit ;o)
j'ai dû manquer quelque chose ?
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
Modifié par f894009 le 9/01/2013 à 17:04
Modifié par f894009 le 9/01/2013 à 17:04
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??????
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
9 janv. 2013 à 17:45
9 janv. 2013 à 17:45
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
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
9 janv. 2013 à 17:49
9 janv. 2013 à 17:49
Re,
Ok, plus de lezard
Bye
Ok, plus de lezard
Bye
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 312
9 janv. 2013 à 17:55
9 janv. 2013 à 17:55
Merci d'avoir débusqué le lézard!
ce qu'il y a de curieux est que j'avais déjà utilisé cette procédure sans avoir de retour des utilisateurs....
@+
ce qu'il y a de curieux est que j'avais déjà utilisé cette procédure sans avoir de retour des utilisateurs....
@+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
Modifié par eriiic le 10/01/2013 à 17:56
Modifié par eriiic le 10/01/2013 à 17:56
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.
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
11 janv. 2013 à 10:35
11 janv. 2013 à 10:35
Bonjour,
Si deux separateurs decimal ou une lettre erreur 13!!!!!!!!
Que ce passe-t-il??
Si deux separateurs decimal ou une lettre erreur 13!!!!!!!!
Que ce passe-t-il??
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
11 janv. 2013 à 11:30
11 janv. 2013 à 11:30
Bonjour,
Pas chez moi. En faisant quelles manip et sur quelle ligne ?
eric
Pas chez moi. En faisant quelles manip et sur quelle ligne ?
eric
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
11 janv. 2013 à 14:47
11 janv. 2013 à 14:47
Re,
Saisie une lettre ou deux points (separateurs)--->n = CDbl("0" & TextBox1)
Saisie une lettre ou deux points (separateurs)--->n = CDbl("0" & TextBox1)
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
Modifié par eriiic le 11/01/2013 à 15:08
Modifié par eriiic le 11/01/2013 à 15:08
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
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
11 janv. 2013 à 15:14
11 janv. 2013 à 15:14
Re,
Toujours erreur 13!!!
Toujours erreur 13!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
Modifié par eriiic le 11/01/2013 à 15:24
Modifié par eriiic le 11/01/2013 à 15:24
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.
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
11 janv. 2013 à 15:37
11 janv. 2013 à 15:37
Re,
Toujour erreur 13, sur 2003 et 2007!!!!
Tout ceci n'a pas l'air d'intéresser beaucoup glennog se rappelle plus qu'il a fait la demande???
Toujour erreur 13, sur 2003 et 2007!!!!
Tout ceci n'a pas l'air d'intéresser beaucoup glennog se rappelle plus qu'il a fait la demande???
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 255
Modifié par eriiic le 11/01/2013 à 15:50
Modifié par eriiic le 11/01/2013 à 15:50
J'ai été voir ses messages, ça a l'air d'être un spécialiste. Il en a rien à f... une fois qu'il a la réponse. Ou alors il ne connait pas encore bien CCM...
Sinon aucune idée pourquoi le traitement d'erreur ne fonctionne pas chez toi. Dis-lui, il a dû oublier lui aussi ;-)
eric
Sinon aucune idée pourquoi le traitement d'erreur ne fonctionne pas chez toi. Dis-lui, il a dû oublier lui aussi ;-)
eric
f894009
Messages postés
17241
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 février 2025
1 713
11 janv. 2013 à 18:05
11 janv. 2013 à 18:05
Re,
J'ai trouve, fait essai sur un autre PC --> Ok, donc vient d'excel sur mon PC. Je vais voir ce qui est faisable. Au moins un aspect positif dans cette discussion.
J'ai trouve, fait essai sur un autre PC --> Ok, donc vient d'excel sur mon PC. Je vais voir ce qui est faisable. Au moins un aspect positif dans cette discussion.
glennog
Messages postés
293
Date d'inscription
jeudi 3 janvier 2013
Statut
Membre
Dernière intervention
19 novembre 2013
4
14 janv. 2013 à 11:42
14 janv. 2013 à 11:42
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