[VBA] écart moyen entre deux caractères ....
BleyBley
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 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 =)
A voir également:
- [VBA] écart moyen entre deux caractères ....
- Nombre de jours entre deux dates excel - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Deux ecran pc - Guide
- Comment faire deux colonnes sur word - Guide
2 réponses
Bonjour,
Tu peux utiliser une fonction personnelle
(code à copier dans un module standard)
https://www.cjoint.com/c/EEfqgU1aurq
A+
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+
BleyBley
Merci, j'ai fait une petite adaptation mais ça marche parfaitement
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...
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