Si vous voulez que la façon la plus simple, vous pouvez aller avec ceci:
Function MyFunction(myString As String) As Boolean
MyFunction = ((Len(myString) = 5) And (IsNumeric(myString)))
End Function
Si vous vouloir le moyen le plus efficace, vous devrez exécuter des tests pour les différentes méthodes les gens ont suggéré.
Editer: La solution précédente ne fonctionne pas bien (voir les 2 premiers commentaires) mais je la laisse là car c'est ce qui a été accepté. Voici ce que je ferais:
Function MyFunction(myString As String) As Boolean
Dim myDouble As Double
Dim myLong As Long
myDouble = Val(myString)
myLong = Int(myDouble/10000)
MyFunction = ((Len(myString) = 5) And (myLong > 0) And (myLong < 10))
End Function
Il n'y a pas d'erreur « protection » dans cette fonction, donc si vous essayez de vérifier un trop grand nombre comme 22222222222222, ça ne marchera pas.
Un nombre négatif à quatre chiffres passerait ces deux essais - par exemple, -3621 a cinq caractères et est numérique. Les points décimaux (36,21) ou les milliers de séparateurs (3 621) causeraient aussi des problèmes. – barrowc
Assez vrai! De plus, si la chaîne est "00005", je crois que la validation serait réussie. – Tipx