équivalent d'un regex [vba] - VB/VBA/VBS - Programmation
Marsh Posté le 24-05-2007 à 09:14:29
Il est possible d'ajouter à ton projet VBA une référence vers la bibliothèque « Microsoft VBScript Regular Expressions 5.5 »
Ça n'est pas aussi puissant qu'en Perl ou PHP mais ça dépanne bien.
Marsh Posté le 24-05-2007 à 11:34:54
tu as trouvé ?
tu peux regarder aussi du coté de la fonction mid et trim
Marsh Posté le 24-05-2007 à 19:50:22
Oui ! Merci bien tegu
Avec la fonction mid/trimça serait plus complexe et y'aurait bp d'inclusions successives de If, ça ralentirait un peu trop je crois ... non ?
Marsh Posté le 24-05-2007 à 20:38:40
Mais j'ai un problème sur le regex.
Pour reconnaître une série comme "aozheohezoai aodh daojoih323 sp 34", j'ai mis : "^{a-z0-9 }$"
et pour reconnaître "D.DR 0345695" j'ai mis "^{a-z0-9 }$" "^{ }?[a-z][.]?[a-z][a-z]{ }?[0]?[0-9][0-9][0-9][0-9][0-9][0-9]$"
Cependant, je n'obtiens aucun résultat. Je me suis trompé ?
Marsh Posté le 25-05-2007 à 08:18:09
Je ne comprends pas que ça ne marche pas ...
J'ai fait :
Code :
|
Ce code sert (normalement ) à regarder si dans la feuille"FeuilleJour", les cellules(k,3) où k représente une valeur de balayage s'incrémentant contiennent une valeur correspondant au regex défini. Si c'est le cas, CodeChantierValide doit prendre cette valeur, sinon, le balayage continue.
Le problème : occurences ne change jamais de valeur alors que CodeChantierPotentiel prend des valeurs qui correspondent au regex (CFR 589745 par exemple).
Vous sauriez m'aider ?
Marsh Posté le 25-05-2007 à 10:56:19
Sans passer par des expressions régulières, à adapter
|
Marsh Posté le 25-05-2007 à 13:01:34
kiki29 a écrit : Sans passer par des expressions régulières, à adapter
|
Ah je vais essayer ça ...
Marsh Posté le 25-05-2007 à 13:28:17
Xocs a écrit : Ah je vais essayer ça ... |
ça marche, mais mon problème veint en fait de la syntaxe de mon regex
Si j'écris " *[A-Z][A-Z][A-Z] *0*[0-9][0-9][0-9][0-9][0-9][0-9] *" ça ne marche pas avec une chaîne telle que KDJ 158975 alors que "[A-Z][A-Z][A-Z] [0-9][0-9][0-9][0-9][0-9][0-9]" va la reconnaître ... Je fais une faute quelque part ?
Marsh Posté le 25-05-2007 à 14:03:39
ReplyMarsh Posté le 25-05-2007 à 14:48:25
jpcheck a écrit : pkoi y a-t-il un 0 tout seul, et pas un [0-9] dans ta commande ? |
Parce que parfois le CodeChantier est écrit comme ça : DJH0128754 , j'essaie donc de parer à toutes les éventualités ...
Marsh Posté le 25-05-2007 à 14:50:44
et à la place de mettre *0*, quel est la séquence pour dire "espace ou 0" ?
(je ne connais pas la syntaxe )
Marsh Posté le 25-05-2007 à 15:02:46
jpcheck a écrit : et à la place de mettre *0*, quel est la séquence pour dire "espace ou 0" ? |
ah, pas bête tiens, espace ou 0 normalement s'écrit " |0" mais là il peut y avoir un espace et un 0 aussi : DFT 0125897
Marsh Posté le 25-05-2007 à 15:35:47
Pour ton masque RegExp, le problème vient des accolades enserrant l'espace.
Ta version : [a-z][.]?[a-z][a-z]{ }?[0]?[0-9][0-9][0-9][0-9][0-9][0-9]
La mienne, testée avec "D.DR 0345695" et "CFR 589745" : [a-z][.]?[a-z]{2}( )?[0-9]{6}
Marsh Posté le 25-05-2007 à 23:02:15
tegu a écrit : Pour ton masque RegExp, le problème vient des accolades enserrant l'espace. |
Ah, merci bien de ta réponse
Je ne peux pas tester là mais je n'y manquerai pas dès mardi
Marsh Posté le 24-05-2007 à 08:48:40
Nouveau problème de syntaxe plus bas !
Bonjour !
Je cherche à lire une cellule sous Excel et à vérifier qu'elle contienne une chaîne de 3 chiffres suivis de 6 caractères alphanumériques avec un espace ou non au milieu.
Ex : FGT 125698
FHG0125871
Y a t-il en VBA un outil, un peu comme le regex en php, qui permette celà ? J'ai cherché sur le net, je n'ai rien trouvé de vraiment probant
Merci d'avance
Message édité par Xocs le 25-05-2007 à 13:38:16