Fonction Application.Match VBA

Bonjour,

J'ai un soucis avec la fonction Match de exel en VBA.

Dans une de mes fonction , je désire trouvé la ligne ou se trouve un élément de recherche
donc j'ai utilisé la fonction approprié :

Voici ma ligne de code :

Dim ligne as double

ligne = Application.Match("STBS", Sheets("STBS ref").Range("G1:G100"), 0)

Je désire donc trouvé le mot STBS dans la colonne G des ligne 1 à 100.
Mais lors d'un pas a pas , arrivé sur cette ligne, rien ne se passe....

J'ai bien un mots STBS dans la colonne G10

Si j'affecte la valeur ligne à une case, la case prend #VALEUR...
J'ai cherché pendant longtemps sur les forum, et ça marche pour plein de gens....

Je suis sous exel 2003 Version FR
Pouvez vous m'aider ???

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Merci de vos réponse, mais rien n'y fait....toujours pas de bon résultat...
    Je suis passé par une autre fonction : Range("G:G)..Find(What:="STBS", LookIn:=xlValues, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Rows

    Celle ci me renvoie la ligne.

    Dommage pour Match....
    1. Tant mieux si ça fonctionne.

      Pour ma part, je ne suis pas un grand fan des méthodes d'Excel et j'évite de les utiliser (problème de compatibilité d'une version à l'autre) et je préfère coder un fonction en VBA.

      Sub Test
      Dim Ligne As Long
      
      Ligne = ReturnRow("STBS", "G1:G100")
      If Ligne = 0 Then
          MsgBox "Elément non trouvé ....",VbExclamation,"Message système"
          Exit Sub
      Else
          MsgBox "L'élément se trouve sur la ligne: " & Ligne
      End If
      End Sub
      
      Public Function ReturnRow(ByVal chaine As Variant, ByVal pTarget As String) As Long
      Dim plage As Range
      Dim cel
      
           Set plage  = Sheets("STBS ref").Range(pTarget)
      
           For Each cel In plage
               If Instr(1, cel.value, chaine) <> 0 then
                    ReturnRow = cel.Row
                    Exit Function
               End If
          Next cel
      
          Set plage = Nothing
      
          ReturnRow = 0
      
      End Function


      Je peux ainsi passer l'élément à rechercher et la plage à tester qui peux être différente d'une recherche à l'autre.

      ;o)
    2. Merci de vos réponse.