Je souhaite vérifier qu'une chaine de caractère n'est pas présente dans une autre chaine de caractere
Pour cela j'utilise la fonction FindB
test = Application.WorksheetFunction.FindB(TextChercher, projet)
TextChercher contient la chaine que je cherche
projet contient la chaine complete que jeveux verifier
Verifier que TextChercher est contenu dans projet
Cette fonction tourne bien lorsque la chaine recherche est presente dans le chaine global, le resultat est 1, mais quand la chaine n'est pas presente alors j'ai une erreur:
IMPOSSIBLE DE LIRE LA PROPRIETE FINDB DE LA CLASSE WORSHEETFUNCTION
Je comprend pas pourquoi un coup ca marche un coup ca marche pas.
Re : Trouver une chaine de charactere dans une autre chaine
Bonjour à tous
Tu peux aussi utiliser InStr
Ci-dessous exemples issus de l'aide en ligne d'Excel VBE InStr, fonction, exemple
Cet exemple utilise la fonction InStr pour renvoyer la position de la première occurrence d'une chaîne dans une autre chaîne.
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP" ' Chaîne dans laquelle s'effectue la ' recherche.
SearchChar = "P" ' Recherche la chaîne "P". '
'Une comparaison sans respect des majuscules et des minuscules commence ' à la position 4 et renvoie 6.
MyPos = Instr(4, SearchString, SearchChar, 1)
' Une comparaison avec respect des majuscules et des minuscules commence ' à la position 1 et renvoie 9.
MyPos = Instr(1, SearchString, SearchChar, 0)
' Par défaut (lorsque le dernier argument est omis),la recherche respecte ' les majuscules et les minuscules.
MyPos = Instr(SearchString, SearchChar) ' Renvoie 9.
Re : Trouver une chaine de charactere dans une autre chaine
salut
une façon de gérer l'erreur
VB:
Option Explicit
Private Sub CommandButton1_Click()
Dim est As Long
On Error GoTo 1
est = Application.FindB("oui", [B2].Value)
If est > 0 Then MsgBox "yeah, au rang " & est: Exit Sub
1 MsgBox "oups"
End Sub
mais je prèfère
VB:
Sub Bouton3_Cliquer()
If [B2] Like "*oui*" Then
MsgBox "j'y suis !", 48, "Eh oui ..."
Else
MsgBox "je n'y suis pas !", 48, "Eh oui ..."
End If
End Sub
Re : Trouver une chaine de charactere dans une autre chaine
En faite le findB, ne fonctionne pas correctement, il passe bien au premier test mais au suivant ca fonctionne beaucoup moins bien
Le findB est dans une boucle et je fait varier le mot a cherche qui eux se trouve dans une colonne.
Dans le premier passage de la boucle FOR il ne trouve pas le mot et sors vers mon flag, au deuxieme passage il ne trouve toujours pas la chaine mais la il plante.
If Not exists Then
For Search = 3 To 35 'Liste des chaine a chercher
TextChercher = Worksheets("Liste des Tcom").Range("A" & Search).Value 'dans la colonne A se trouve les valeur
On Error GoTo NonTrouve
test = Application.WorksheetFunction.FindB(TextChercher, projet)
If Worksheets("Liste des Tcom").Range("A" & Search).Value = projet Then
If Worksheets("Liste des Tcom").Range("B" & Search).Value = "B3" Then
ListBox_projets_B3.AddItem projet
Exit For
End If
End If
NonTrouve:
Next Search