[VBA] écart moyen entre deux caractères ....
BleyBley
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
Pour mon projet je souhaiterais vérifier la "structure" des informations renseignées par l'utilisateur, mais mon problème : ma string de sortie à une structure précise mais elle n'a pas de longueur fixe. Je ne peux donc pas utiliser "like".
La string est une liste de codes de 7 (lettres et chiffres) séparés par ";" ce qui donne : ???????;???????;???????;etc.
Auriez-vous une solution permettant de calculer l'écart moyen entre deux caractères particuliers ? ( Car si l'écart entre les ";" ne vaut pas 7 alors la structure n'est pas respectée )
Ou une autre solution ?
Merci d'avance =)
Pour mon projet je souhaiterais vérifier la "structure" des informations renseignées par l'utilisateur, mais mon problème : ma string de sortie à une structure précise mais elle n'a pas de longueur fixe. Je ne peux donc pas utiliser "like".
La string est une liste de codes de 7 (lettres et chiffres) séparés par ";" ce qui donne : ???????;???????;???????;etc.
Auriez-vous une solution permettant de calculer l'écart moyen entre deux caractères particuliers ? ( Car si l'écart entre les ";" ne vaut pas 7 alors la structure n'est pas respectée )
Ou une autre solution ?
Merci d'avance =)
2 réponses
-
Bonjour,
Tu peux utiliser une fonction personnelle
(code à copier dans un module standard)Function Verifier(Cel As Range) As String
Dim Tablo
Dim i As Integer
If Cel <> "" Then
Verifier = "CORRECT"
Else
Verifier = ""
End If
Tablo = Split(Cel, ";")
For i = 0 To UBound(Tablo)
If Len(Tablo(i)) <> 7 Then
Verifier = "INCORRECT"
Exit For
End If
Next i
End Function
https://www.cjoint.com/c/EEfqgU1aurq
A+ -
Bonjour,
Salutations à Gyrus.
Une variante en utilisant les expressions régulières (pensez à activer la référence Microsoft vbscript regular expression 5.5) :
Prend en compte les deux situations : si la chaine termine par un ";" ou non...Function Verifie(Chaine As String) As Boolean 'Menus Outils>Références :cochez : "Microsoft vbscript regular expression 5.5" Dim reg As Object, Nb As Long Nb = UBound(Split(Chaine, ";")) Set reg = CreateObject("vbscript.regexp") Select Case Right(Chaine, 1) Case ";": reg.Pattern = "(.{7};){" & Nb & "}" Case Else: reg.Pattern = "(.{7};){" & Nb & "}(.{7})" End Select Verifie = reg.test(Chaine) End Function