[VBA] Expressions régulières et LIKE
Résolu
Yoskopolite
Messages postés
83
Date d'inscription
Statut
Membre
Dernière intervention
-
Yoskopolite Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
Yoskopolite Messages postés 83 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Vba like
- Voir like instagram - Guide
- Coco like - Accueil - Réseaux sociaux
- Excel compter cellule couleur sans vba - Guide
- Wawacity like - Accueil - Outils
- Vba attendre 1 seconde ✓ - Forum VB / VBA
5 réponses
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
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
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
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