convertir une chaine en table
Le
Jacques
Bonjour,
J'ai une chaine de caractère "chaine de test" et je voudrais la convertir en
tableau pour que
tab [0] = chaine
tab [1] = de
tab [2] = test
je voudrais utiliser ça pour faire une recherche multi mot.
exemple :
j'ai plussieur chaine :
chaine 1 = "ceci contient un test"
chaine 2 = "Celle là est juste une chaine"
chaine 3 = "vous ne trouverez rien ici"
si je cherche ma chaine de départ "chaine de test" dans les chaines
ci-dessus je voudrais comme résultat:
Ok pour chaiine 1
Ok pour chaine 2
Nok pour chaine 3
Merci d'avance.
Jacques
J'ai une chaine de caractère "chaine de test" et je voudrais la convertir en
tableau pour que
tab [0] = chaine
tab [1] = de
tab [2] = test
je voudrais utiliser ça pour faire une recherche multi mot.
exemple :
j'ai plussieur chaine :
chaine 1 = "ceci contient un test"
chaine 2 = "Celle là est juste une chaine"
chaine 3 = "vous ne trouverez rien ici"
si je cherche ma chaine de départ "chaine de test" dans les chaines
ci-dessus je voudrais comme résultat:
Ok pour chaiine 1
Ok pour chaine 2
Nok pour chaine 3
Merci d'avance.
Jacques

Poser une question


Jacques a écrit :
Essaie avec Split :
Dim tb() As String
Dim i As Integer
tb = Split("Chaine de test", " ")
For i = 0 To UBound(tb)
Debug.Print tb(i)
Next i
--
Cordialement,
Jacques.
en
Hello,
voici ta fonction:
Public Function ChercherMultiMots(pattern As String, chaine As String) As
Boolean
Dim t() As String
Dim i As Long
If pattern = "" Or chaine = "" Then
Exit Function
End If
t() = Split(pattern, " ")
For i = LBound(t()) To UBound(t())
If InStr(chaine, t(i)) Then
ChercherMultiMots = True
Exit For
End If
Next i
End Function
Voici un exemple d'appel:
Private Sub Command1_Click()
Dim chaine1 As String
Dim chaine2 As String
Dim chaine3 As String
Dim pattern As String
Dim ret As Boolean
chaine1 = "ceci contient un test"
chaine2 = "Celle là est juste une chaine"
chaine3 = "vous ne trouverez rien ici"
pattern = "chaine de test"
ret = ChercherMultiMots(pattern, chaine1)
Debug.Print "resultat pour chaine: " & chaine1 & " => " & ret
ret = ChercherMultiMots(pattern, chaine2)
Debug.Print "resultat pour chaine: " & chaine2 & " => " & ret
ret = ChercherMultiMots(pattern, chaine3)
Debug.Print "resultat pour chaine: " & chaine3 & " => " & ret
End Sub
Et voici les résultats:
resultat pour chaine: ceci contient un test => True
resultat pour chaine: Celle là est juste une chaine => True
resultat pour chaine: vous ne trouverez rien ici => False
Tout roule :-)
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
La solution de Jean-marc est comme d'habitude excellente à un détail près :
l'utilisation abusive de la valeur par défaut des booléens en VB
donc je propose
Public Function ChercherMultiMots(pattern As String, chaine As String) As
Boolean
Dim t() As String
Dim i As Long
Dim Résultat as Boolean
If pattern = "" Or chaine = "" Then
Résultatúlse
else
t() = Split(pattern, " ")
For i = LBound(t()) To UBound(t())
Résultat=(InStr(chaine, t(i)) >0)
If Résultat Then exit for
Next i
End If
ChercherMultiMots=résultat
End Function
Ceal n'enlève rien à la solution de Jean-Marc et est juste une remarque de
puriste;
:
Hello,
Je m'en suis aperçu hier soir en me relisant, et je n'ai pas rectifié :-)
Donc, Patrice a parfaitement raison, il faut toujours utiliser
un boolean ou une expression booléene dans un test et ne jamais
utiliser abusivement la valeur d'un entier pour un test.
--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;