Application.Match avec un Array et un spit
Bonsoir à tous,
Je viens vers vous car la je bugge.....
J'ai un Array du type:
Code:
tablo = Array("Mâles", "Hongres", "Femelles", "juments")
et un split du type:
Code:
1 2
| chaine = "Pour juments de 7, 8 et 9 ans (V, U et T), n'ayant pas gagné 263.000 "
splitchaine = Split(chaine, " ") |
Je souhaite en fonction de l'Array trouver dans le split, un des 4 arguments de l'Array, mais en vain, il me renvoit "Trouvé" à chaque fois....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| Sub Essai()
tablo = Array("Mâles", "Hongres", "Femelles", "juments")
chaine = "Pour juments de 7, 8 et 9 ans (V, U et T), n'ayant pas gagné 263.000 "
splitchaine = Split(chaine, " ")
For a = LBound(tablo) To UBound(tablo)
For s = 0 To UBound(splitchaine)
On Error Resume Next
If IsError(Application.Match(splitchaine(s), tablo(a), 0)) Then
'If IsError(Application.Match(tablo(a), splitchaine(s), 0)) Then
MsgBox "trouvé"
Else
MsgBox "non trouvé"
End If
On Error GoTo 0
Next
Next
End Sub |
J'ai également essayé de la façon "Scripting.dictionary" que est une manière élégante et relativement rapide...Il y a un truc que je n'ai pas du comprendre
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 'On recherche dans chaine, la présence de mots dans tablo.
Sub recherche()
tablo = Array("Mâles", "Hongres", "Femelles", "juments")
chaine = "Pour juments de 7, 8 et 9 ans (V, U et T), n'ayant pas gagné 263.000 "
splitchaine = Split(chaine, " ")
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
For Each C In tablo
d.Add C.Value, C.Value
Next C
For j = LBound(splitchaine) To UBound(splitchaine)
If d.Exists(splitchaine(j)) Then MsgBox splitchaine(j)
Next j
End Sub |
je sollicite votre aide pour me dépatouiller avec ces 2 solutions afin que je comprenne mon erreur dans les 2 sub
Merci d'avance
seb