[VBA] Expressions régulières et LIKE
Résolu/Fermé
Yoskopolite
Messages postés
83
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
9 novembre 2012
-
19 oct. 2009 à 17:09
Yoskopolite Messages postés 83 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 9 novembre 2012 - 20 oct. 2009 à 08:51
Yoskopolite Messages postés 83 Date d'inscription lundi 14 juillet 2008 Statut Membre Dernière intervention 9 novembre 2012 - 20 oct. 2009 à 08:51
A voir également:
- Vba like
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Minimal bash-like line editing is supported ✓ - Forum Linux / Unix
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 oct. 2009 à 18:06
19 oct. 2009 à 18:06
Salut,
mais en ce qui concerne le {1,20}, ça bloque.
Tu peux écrire toi même la fonction
Par exemple
mais en ce qui concerne le {1,20}, ça bloque.
Tu peux écrire toi même la fonction
Par exemple
Function regexA_Za_z0_9(s As String) As Boolean Dim len_s As Byte, i As Byte Dim test As Boolean test = False len_s = Len(s) ' si chaîne vide la fonction renvoie FAUX ' si nombre caractères plus grands que 20 la fonction renvoie FAUX ' si caractère non inclus la fonction renvoie FAUX ' si entre 1 et 20 caractères inclus la fonction renvoie VRAI If len_s >= 1 And len_s <= 20 Then test = True If test = True Then For i = 1 To len_s If Mid(s, i, 1) Like "[a-zA-Z0-9]" Then test = True Else test = False Exit For End If Next End If If test = True Then regexA_Za_z0_9 = True Else regexA_Za_z0_9 = False End If End Function
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
19 oct. 2009 à 17:36
19 oct. 2009 à 17:36
bonjour
Pour la première option
par exemple: signale une mauvaise syntaxe et l'efface
pour la 2° je regarde avec Like mais je crois qu'on ne va pas couper à une fonction VBA avec l'objet
vbscript.regexp
à+ si je trouve qq chose
Pour la première option
....Like "[a-zA-Z][a-zA-Z][-]###[-][a-zA-Z][a-zA-Z]"
par exemple: signale une mauvaise syntaxe et l'efface
Private Sub Worksheet_Change(ByVal Target As Range) 'A partir démo Michel_xld If Not Intersect(Target, Range("A1:A100")) Is Nothing Then If Target.Value Like "[a-zA-Z][a-zA-Z][-]###[-][a-zA-Z][a-zA-Z]" Then Exit Sub On Error GoTo Fin Application.EnableEvents = False MsgBox "Format non conforme." Application.Undo End If Fin: Application.EnableEvents = True End Sub
pour la 2° je regarde avec Like mais je crois qu'on ne va pas couper à une fonction VBA avec l'objet
vbscript.regexp
à+ si je trouve qq chose
Yoskopolite
Messages postés
83
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
9 novembre 2012
8
20 oct. 2009 à 08:38
20 oct. 2009 à 08:38
Merci bien à vous deux.
L'idée de faire moi même la fonction ne m'est venue qu'après. Merci de l'avoir implémenté pour moi : je crois que c'est ce que je vais utiliser :-)
Après tests : ça marche bien, mais je me suis permis de modifier un petit peu ta fonction pour l'optimiser et corriger un oubli de End If, aussi :
L'idée de faire moi même la fonction ne m'est venue qu'après. Merci de l'avoir implémenté pour moi : je crois que c'est ce que je vais utiliser :-)
Après tests : ça marche bien, mais je me suis permis de modifier un petit peu ta fonction pour l'optimiser et corriger un oubli de End If, aussi :
Function regexA_Za_z0_9(s As String) As Boolean Dim len_s As Byte, i As Byte Dim test As Boolean test = False len_s = Len(s) ' si chaîne vide la fonction renvoie FAUX ' si nombre caractères plus grands que 20 la fonction renvoie FAUX ' si caractère non inclus la fonction renvoie FAUX ' si entre 1 et 20 caractères inclus la fonction renvoie VRAI If len_s >= 1 And len_s <= 20 Then test = True For i = 1 To len_s If Not Mid(Range("A1").Value, i, 1) Like "[a-zA-Z0-9]" Then test = False Exit For End If Next End If If test = True Then regexA_Za_z0_9 = True Else regexA_Za_z0_9 = False End If End Function
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
20 oct. 2009 à 08:50
20 oct. 2009 à 08:50
Salut,
et corriger un oubli de End If, aussi
Si tu parles de ça
Alors ce n'est pas un oubli ;-)
Voici la syntaxe de if..then..else
On peut écrire par exemple
If condition Then MsgBox "ok" Else MsgBox "pas ok"
et corriger un oubli de End If, aussi
Si tu parles de ça
If len_s >= 1 And len_s <= 20 Then test = True
Alors ce n'est pas un oubli ;-)
Voici la syntaxe de if..then..else
Syntaxe If condition Then [statements] [Else elsestatements] Vous pouvez également utiliser la syntaxe suivante : If condition Then [statements] [ElseIf condition-n Then [elseifstatements] ... [Else [elsestatements]] End If
On peut écrire par exemple
If condition Then MsgBox "ok" Else MsgBox "pas ok"
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Yoskopolite
Messages postés
83
Date d'inscription
lundi 14 juillet 2008
Statut
Membre
Dernière intervention
9 novembre 2012
8
20 oct. 2009 à 08:51
20 oct. 2009 à 08:51
Ah autant pour moi, j'avais oublié ce détail et mal interprété ton code :D
Merci encore ^^
Merci encore ^^