Trouver une chaine de charactere dans une autre chaine

Dey75

XLDnaute Nouveau
Bonjour,

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.

Merci de votre aide
 

Staple1600

XLDnaute Barbatruc
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.

MyPos = Instr(1, SearchString, "W") 'Renvoie 0

EDITION
: Bonsoir Si...



 
Dernière édition:

Si...

XLDnaute Barbatruc
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
 

Pièces jointes

  • Application.FinB.xls
    49.5 KB · Affichages: 58

Dey75

XLDnaute Nouveau
Re : Trouver une chaine de charactere dans une autre chaine

Merci pour vos reponses

Je vais essayer toutes vos réponses afin de mieux comprendre le fonctionnement de chacune.

Je pense que ca va etre bon, j'essai ca cet apres midi et vous tiens au courant
 

Dey75

XLDnaute Nouveau
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
 

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 338
Membres
103 815
dernier inscrit
SANOU ANSELME