bug avec Find dans une function
Bonjour à tous,
J'ai depuis quelques temps un pb avec vba. Je crée une fonction qui m'affiche la ligne où est écrit azerty par ex. dans ma feuille excel
La fonction est la suivante: Elle s'appelle toto(). Elle affiche d'abord un msgbox en affichant le texte cell1. Cela sert à vérifier que la fonction lit bien le texte que je lui passe en paramètre.
Le code de la fonction est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Public Function toto(cell1 As String)
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Feuil1")
ws.Select
Cells.Select
If (cell1 = "azerty") Then
MsgBox "string ok"
End If
Selection.Find(What:=cell1, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
toto = ActiveCell.Row
End Function |
Le problème est le suivant:
Si j'écris dans une cellule de Feuil1: =toto(C3) avec le texte azerty dans la cellule C3 ma fonction affiche bien le msgbox "string ok" mais ne me retourne pas la ligne. Il y a #VALEURS! qui est écrit.
Si je lance la fonction par une sub par contre je retrouve bien le numéro de la ligne. La sub est la suivante:
Code:
1 2 3
| Public Sub totosub()
MsgBox (toto("azerty"))
End Sub |
Je ne comprends absolument pas le bug dans la fonction. Il est situé au niveau de la fonction Find. J'ai pensé que c'était du au fait que la function ne récupère pas azerty, c'est pour cela que j'ai le test sur "azerty" dans toto(). Mais le problème n'est pas du à ça!
Merci de votre aide
Nicolas