GNT sans publicité, site mobile, fonctionnalitées exclusives...

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

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #15531191
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.
Jean-Marc
Le #15531151
"Jacques" 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_' ;
Patrice Henrio
Le #15530911
> 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;
Jean-Marc
Le #15530861
"Patrice Henrio" 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_' ;
Publicité
Suivre les réponses
Poster une réponse
Anonyme