Problèmes tests de caractères ASCII dans textbox

flint6593

XLDnaute Occasionnel
Bonjour, j'ai un gros souci dans mon programme.

Je dois tester une chaîne de caractères et interdire tous les caractères spéciaux sauf les "-" donc voici mon code, certe un peu maladroit, mais je me prends la tête dessus depuis un moment!!!!
P.S: J'utilise la valeur "true" ou "false" dans mon programme pour mettre une alarme si il y a présence d'un caractères interdit.

Voilà:

Function RefValide(Ref As String) As Boolean

RefValide = True 'initilaisation
If Len(Ref) > 25 Then RefValide = False 'si plus de 25 caractères
If Ref Like "*? ?*" Then RefValide = False 'si contient des expaces

For n = 1 To Len(Ref) 'début du tests caractères par caractères
If Asc(Mid(Ref, n, 1)) < 48 Or Asc(Mid(Ref, n, 1)) > 57 Then RefValide = False 'si pas des chiffres
If Asc(Mid(Ref, n, 1)) = 45 Then RefValide = True 'si "-" c'est bon
If Asc(Mid(Ref, n, 1)) < 65 Or Asc(Mid(Ref, n, 1)) > 90 Then RefValide = False 'si pas des lettres
If Asc(Mid(Ref, n, 1)) < 97 Or Asc(Mid(Ref, n, 1)) > 122 Then RefValide = flase 'si pas des lettres
If Asc(Mid(Ref, n, 1)) > 122 Then RefValide = False 'si autre choses que lettres et chiffre
Next n

End Function
 

Dranreb

XLDnaute Barbatruc
Re : Problèmes tests de caractères ASCII dans textbox

Bonsoir.
À part flase au lieu de False dans l'avant dernier test, qu'est-ce qui ne va pas dans votre Function ?
Remarque: ça vous aurait sauté aux yeux comme à moi si vous aviez mis en tête du module:
Option Explicit
Ce que je m'étais empressé de faire avant de tenter toute évaluation.
À+

Remarque: je l'aurais plutôt écrit comme ça:
VB:
Function RefValide(Ref As String) As Boolean
Dim N As Long
RefValide = True 'initilaisation
If Len(Ref) > 25 Then RefValide = False 'si plus de 25 caractères
For N = 1 To Len(Ref) 'début du test caractères par caractères
   If InStr("0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ", UCase$(Mid$(Ref, N, 1))) = 0 Then
      RefValide = False: Exit Function
      End If
   Next N
End Function
C'est peut être même obligatoire, à la réflexion, car votre logique ne semble pas bonne: dans la mesure ou il y plusieurs bonnes tranches, le caractère est toujours exclut des autres que la sienne ! Il aurait déja fallu tester plutôt sa présence dans de mauvaises tranches
À+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth