Problèmes tests de caractères ASCII dans textbox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour