Interdire la saisie de caractères spéciaux.

Résolu
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008 - 24 juil. 2008 à 16:02
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 24 juil. 2008 à 17:12
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2008 à 16:34
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
3
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008
24 juil. 2008 à 17:09
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 juil. 2008 à 17:12
gaffe au presse papier (si on colle du texte comprenant ces caractères)
0
Rejoignez-nous