Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

convertir une chaine en table

4 réponses
Avatar
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

4 réponses

Avatar
Jacques93
Bonjour Jacques,
Jacques a écrit :
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





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.
Avatar
Jean-Marc
"Jacques" a écrit dans le message de
news:4321bda1$0$27445$
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




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_' ;
Avatar
Patrice Henrio
> 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



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;
Avatar
Jean-Marc
"Patrice Henrio" a écrit dans le message de
news:%


> If InStr(chaine, t(i)) Then




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

Résultat=(InStr(chaine, t(i)) >0)



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_' ;