1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
MyT = Range("H2").Value 'Valeur à rechercher
For Each c In Range("A1:A10")
MyPos = InStr(1, c, MyT, vbTextCompare)
If MyPos = 0 Then ' Si le résultat est 0 -> Faux
c.Offset(0, 1) = "FAUX"
ElseIf MyPos >= 1 Then
' Sinon, si le contenu de la cellule est de la longueur de ta chaine -> Vrai
If Len(c.Value) = Len(MyT) Then
c.Offset(0, 1) = "VRAI"
Else
If MyPos = 1 Then
' ----- Si le caractère juste après ta chaine (long chaine + 1) est numérique (fonction IsNum) -> Faux
'----- sinon -> Vrai
c.Offset(0, 1) = AlphaNum(c.Text, MyPos + Len(MyT))
Else
'----- Si le caractère juste avant ta chaine (InStr - 1) est numérique (fonction IsNum) -> Faux
If Not (AlphaNum(c.Text, MyPos - 1)) Then
c.Offset(0, 1) = "FAUX"
Else
'----- Si le caractère juste après ta chaine (long chaine + InStr) est numérique (fonction IsNum) -> Faux
'----- sinon -> Vrai
c.Offset(0, 1) = AlphaNum(c.Text, MyPos + Len(MyT))
End If
End If
End If
End If
Next c
End Sub
Function AlphaNum(MaCellule As String, MyPosition As Integer) As Boolean
'Est-ce que le caractère contigu à la chaine n'est pas alphanumérique ?
'Renvoie VRAI si le caractère est spécial --> la chaine inspectée est bien celle recherchée
'Renvoi FAUX si c'est un caractère alphanumérique --> la chaine inspectée n'est pas celle recherchée
AlphaNum = True
If IsNumeric(Mid(MaCellule, MyPosition, 1)) Then
AlphaNum = False
ElseIf Mid(MaCellule, MyPosition, 1) Like "[A-z]" Then
AlphaNum = False
End If
End Function |
Partager