VBA Excel : tester une chaine de caracteres variable
Résolu/Fermé
Eaheru
Messages postés
197
Date d'inscription
mercredi 23 juin 2010
Statut
Membre
Dernière intervention
12 mars 2018
-
17 juil. 2014 à 15:01
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 juil. 2014 à 12:02
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 18 juil. 2014 à 12:02
A voir également:
- Vba chaine de caractère contient
- Ce fichier contient l'historique des livres empruntés à la bibliothèque. combien de titres différents contient-il ? - Forum Excel
- Le document à télécharger contient des poèmes. faites en sorte que chaque poème commence sur une nouvelle page. après cette modification, combien de pages le document contient-il ? ✓ - Forum Word
- Caractère ascii - Guide
- Excel formule : compter le nombre de valeurs différentes ✓ - Forum Excel
- Caractere speciaux - Guide
6 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 11:22
18 juil. 2014 à 11:22
Bonjour,
Pourquoi pas avec une petite fonction Boolean bâtie sur une expression régulière...
J'ai, normalement, suffisamment commenté la règle de l'expression pour que tu puisses l'adapter. Mais n'hésite pas si je suis à côté de la plaque!!
ATTENTION : Bien cocher la référence nécessaire (cf code)
Pourquoi pas avec une petite fonction Boolean bâtie sur une expression régulière...
J'ai, normalement, suffisamment commenté la règle de l'expression pour que tu puisses l'adapter. Mais n'hésite pas si je suis à côté de la plaque!!
ATTENTION : Bien cocher la référence nécessaire (cf code)
Option Explicit 'cocher la référence Microsoft vbscript regular expression 5.5 'Dans Outils/Références Function TestVis(texto As Range) As Boolean Dim reg As Object Set reg = CreateObject("vbscript.regexp") reg.Global = False reg.Pattern = "(^Vis )([a-zA-Z]{1,3})( )(M)([a-zA-Z]{1,2})(-)([a-zA-Z]{1,3})( classe )([a-zA-Z]{1,2})(.)([a-zA-Z]{1})" TestVis = reg.Test(texto) 'Explication du Pattern : 'entre chaque parenthèse, on place un élément de l'enchainement 'La chaine de caractères à tester est un enchainement précis de : 'Le mot Vis au début de la chaine, => (^Vis) ^ représente le début de la chaine et Vis respecte la casse (Majusc, minusc) 'suivi de 1 à 3 lettres, => ([a-zA-Z]{1,3}) 'suivi d'un espace, => ( ) *--- Note : on aurait pu l'insérer avec le M qui suit... Mis pour l'exemple 'suivi de la lettre M, => (M) 'suivie de 1 à 2 lettres, => ([a-zA-Z]{1,2}) 'suivie d'un tiret, => (-) 'suivi de 1 à 3 lettres, => ([a-zA-Z]{1,3}) 'suivi du mot classe entouré d'espace ET en minuscules, => ( classe ) 'suivi d'1 à 2 lettres, => ([a-zA-Z]{1,2}) 'suivi d'un point, => (.) 'suivi d'une lettre. => ([a-zA-Z]{1}) 'Le tout mis bout à bout nous donne la règle (Pattern) à respecter, soit : ' "(^Vis )([a-zA-Z]{1,3})( )(M)([a-zA-Z]{1,2})(-)([a-zA-Z]{1,3})( classe )([a-zA-Z]{1,2})(.)([a-zA-Z]{1})" End Function Sub Test() Dim i& For i = 1 To 5 'Lance le test sur les cellules de A1 à A5 MsgBox TestVis(Range("A" & i)) Next i End Sub