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 ???
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
-
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....-
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) -
-