Fonction Match VBA deux plages à comparer

Bonjour à tous,

Il y a une fonction sur VBA que je n'arrive pas à reproduire alors qu'elle marche dans une feuille de calcul.

0Jour
10Nuit
10Jour
1Nuit
0Jour

La fonction dans Excel est =EQUIV(1;(A1:A5<>0)*(B1:B5="Jour");0) et fonctionne (renvoie "3")

Dans VBA, j'ai fait plusieurs essais et toujours rien...

Dernier essaye en date :

Application.WorksheetFunction.Match(1, (Range(Worksheets(1).Cells(1, 1), Worksheets(1).Cells(5, 1)) <> 0) * (Range(Worksheets(1).Cells(2, 1), Worksheets(1).Cells(2, 1)) = "Jour"), 0

Sur cette ligne je tombe sur une erreur 13 incompatibilité de type

Merci pour votre aide !

bonsoir,

essaie ceci

With Sheets(1)
        f = "=match(1,((A1:A5<>0)*(B1:B5=""Jour"")),0)"
        MsgBox Application.Evaluate(f)
    End With

ou si tu souhaites passer par une définition dynamique des plages :

With Sheets(1)
        f = "=match(1,(('" & .Name & "'!" & Range(.Cells(1, 1), .Cells(5, 1)).Address & "<>0)*('" & .Name & "'!" & Range(.Cells(1, 2), .Cells(5, 2)).Address & "=""Jour"")),0)"
        MsgBox Application.Evaluate(f)
    End With
Rechercher des sujets similaires à "fonction match vba deux plages comparer"