Interdire la saisie de caractères spéciaux. [Résolu]

Signaler
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour,

Lors de la saisie de texte dans un textbox de la part de l'utilisateur de mon application, il faut que j'interdise tous les caractères spéciaux : ""*/\<>|:?
J'ai décidé, pour que ce soir plus simple à la programmation, de laisser l'utilisateur saisire sa chaîne de caractères puis de vérifier celle-ci en lui envoyant un message d'erreur si un de ces caractères a été détecté dans sa chaîne (par contre je ne veux pas prendre sa chaine et enlever ces caractères, sa serait trop le bordel pour la suite...)
Voici ce que j'ai fait tout bêtement :

If InStr("?", newSession.Text) or If InStr("*", newSession.Text)  ... Then
   MsgBox "Un nom de session ne peut contenir aucun des caractères suivants : ""*/\<>|:?", vbOKOnly, "Nouvelle session"

Ceci ne marche pas super bien : quand je rentre un seul point d'interrogation dans une chaîne, c'est ok sa m'envoie un message d'erreur mais quand j'en rentre deux à la suite sa ne les détecte pas...

Savez s'il y a un moyen pour faire fonctionner tout ceci ? Au pire je peux aussi essayer de détecter à chaque fois que l'utilisateur tape un caractère pour le prévenir mais je ne sais pas comment faire.

Je prévise que je suis sous Visual Basic 6 et qu'il m'est impossible de changer ce langage. Voila, j'espere que vous pourrez m'aider, merci d'avance.

Enfin quelqu'un qui n'a pas de signature.

3 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Instr renvoie un numérique, pas un boolean, Or non indiqué, donc.


faire :
If InStr("?", newSession.Text)<>0 or InStr("*", newSession.Text)<>0 ... Then

ou, pour jouer un peu :
If InStr("?", newSession.Text) + InStr("*", newSession.Text) <> 0 Then
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008

Merci mais j'ai trouvé une solution plus adaptée à mon probleme, j'ai claqué le model de windows en rajoutant ceci dans le KeyPress de mon Textlabel:
If KeyAscii 34 Or KeyAscii 42 Or KeyAscii = 47 Or KeyAscii = 92 Or KeyAscii = 60 Or KeyAscii = 62 Or KeyAscii = 124 Or KeyAscii = 58 Or KeyAscii = 63 Then
    MsgBox "Un nom de session ne peut contenir aucun des caractères suivants : ""*/\<>|:?", vbOKOnly, "Caractère incorrect"
    KeyAscii = 0
End If

Enfin quelqu'un qui vé une n'a pas de signature.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
gaffe au presse papier (si on colle du texte comprenant ces caractères)