Rechercher mot dans chaine via Array

Bonjour à tous,

Poste = Array("A1", "A2", "A3G", "AAD", "AAG", "AAD", "PRA", "AD", "A3D", "A3GG", "A3", "EXC", "AA4G", "AAM4", "AUA1", "ABA1A", "AAB2")

Comment récupérer dans une cellule ... mieux que des mots voici un exemple :

forum.excel-pratique.com

Je voudrais récupérer "pratique" car il y a "PRA" dans la liste array

ou Je voudrais récupérer "Excel" car il y a "EXC" dans la liste array

J'espère avoir été clair . :)

J'ai essayé avec InStr mais il me donne pas ce que je recherche.

Merci pour votre aide

Bonjour Jefekoi

Voici une Sub qui fait ce que vous souhaitez

Sub Test()
  Call FindWord("forum.excel-pratique.com")
End Sub

Sub FindWord(vSearch As String)
  Dim Poste() As Variant
  Dim Inc As Integer, Ind As Integer
  Poste = Array("A1", "A2", "A3G", "AAD", "AAG", "AAD", "PRA", "AD", "A3D", "A3GG", "A3", "EXC", "AA4G", "AAM4", "AUA1", "ABA1A", "AAB2")
  For Ind = 0 To UBound(Poste) - 1
    If InStr(1, vSearch, Poste(Ind), vbTextCompare) > 0 Then
      MsgBox "Trouvé !"
      Exit For
    End If
  Next Ind
End Sub

ça peut être une fonction

@+

Parfait , Merci Bruno

Je viens de tester avec dans la cellule j'y ajoute "A3" et il me donne en résultat "A3GG" alors que le "A3" existe dans le Array

Il y a moyen de rectifier ça ?

Re,

Si on veut trouver une occurrence exacte, il ne faut pas utiliser INSTR()

Sub FindWord(vSearch As String)
  Dim Poste() As Variant
  Dim Inc As Integer, Ind As Integer
  Poste = Array("A1", "A2", "A3G", "AAD", "AAG", "AAD", "PRA", "AD", "A3D", "A3GG", "A3", "EXC", "AA4G", "AAM4", "AUA1", "ABA1A", "AAB2")
  For Ind = 0 To UBound(Poste) - 1
    If UCase(vSearch) = Poste(Ind) Then
    'If InStr(1, vSearch, Poste(Ind), vbTextCompare) > 0 Then
      MsgBox "Trouvé !"
      Exit For
    End If
  Next Ind
End Sub

Mais du coup, nous sommes hors sujet par rapport à l'exemple du début

@+

Merci BrunoM45 finalement j'ai pris la première version en retirant le "Exit For"

Je ne sais pas si c'est une bonne chose , seul l'avenir me le dira ;)

Merci pour ton aide :)

Re,

Ce qu'il faut c'est mettre les valeurs dans l'ordre décroissant du nombre de lettres

@+

Oui effectivement c'est une bonne idée merci Bruno :)

Rechercher des sujets similaires à "rechercher mot chaine via array"