re,
avec evaluate, on calcule quelque chose en VBA qu'on fait normallement dans une feuille. Vous pouvez par exemple mettre cette formule dans une feuille (la première formule est pour dans la feuille elle-même, la 2ième pour une autre feuille).
=MAX(SI((E1:E100<>"")*(E1:E100<>0);LIGNE(E1:E100)))
=MAX(ALS((Feuil1!E2:E101<>"")*(Feuil1!E2:E101<>0);RIJ(Feuil1!E2:E101)))
Mais comme VBA est anglais, il faut traduire cela en
=MAX(IF((Feuil1!E2:E101<>"")*(Feuil1!E2:E101<>0),ROW(Feuil1!E2:E101)))
Mais maintenant vous voulez que ce "100" soit un variable
Sub test()
s1 = "MAX(IF((Feuil1!E2:E101<>"""")*(Feuil1!E2:E101<>0),ROW(Feuil1!E2:E101)))" '>>>> attention ce double """"
s2 = Replace(s1, "101", "#")
r = Application.InputBox("un numéro svp", , 1000, , , , 2)
s3 = Replace(s2, "#", r)
MsgBox "ma formule en anglais, avec virgule au lieu de point virgule" & vbLf & "et le "" doublé est " & vbLf & s1 & vbLf & vbLf & _
"ma formule avec ""#"" au lieu de ""100 """ & s2 & vbLf & vbLf & _
"ma formule avec au lieu de ""#"" un numéro variable : ligne " & r & " : " & s3 & vbLf & vbLf
x = Evaluate(s3)
MsgBox "résultat : " & x
End Sub
Donc, si vous traduisez votre formule en anglais ( ; devient , ) (https://fr.excel-translator.de/translator/) et si vous avez un " vous le doublez, mettez le resultat dans un string et puis vous n'avez qu'à evaluer ce string
Si vous me donnez une formule que vous avez maintenant quelque part dans votre feuille et vous voulez calculer cela en VBA, envoyez votre fichier avec votre formule, pour mieux vous expliquer ...