VBA Max IF

Bonjour à tous,

J'utile un code VBA pour trouver une valeur max si telle que ci-dessous,

Au bout de 25 000 enregistrement, je reçois une erreur de type 13

Le debogage m'indique la ligne calcMax = Evaluate ...

L'équivalent en formule est : INDEX($R$1:R2;SUMPRODUCT(MAX((ROW($O$1:O2))*($O$1:O2=O3)))

Pouvez-vous m'aider svp ?

Grand merci !

Public Function calcMax(i As Long) As Double

Dim rngVal As String

Dim rngName As String

Dim xMax As Double

Dim xFind As Long

'Set range from which to determine largest value

rngVal = Range("R2:R" + CStr(i - 1)).Address

rngName = Range("O1:O" + CStr(i - 1)).Address

xFind = Range("O" + CStr(i))

'Worksheet function MAX returns the largest value in a range

calcMax = Evaluate("MAX(IF(" & rngName & "=" & xFind & "," & rngVal & "))")

End Function

Bonsoir,

erreur de type indique un mauvais type de variable dans une fonction.

Essayez de laisser VBA déterminer le type de chaque variables en mettant soit rien soit VARIANT.

Si l'erreur ne se produit plus alors à vous de voir quel "type" il faut changer.

Ici sans fichier, sans savoir le type de variable qui se trouve dans votre feuille, pour ma part c'est trop compliqué...

@ bientôt

LouReeD

En déclarant la variable as variant, pas d'erreur !

Excellent ! Merci beaucoup

Bonjour

XMax je présume ?

L'idéale est de "typer" ses variables, variant est par défaut et oblige VBA à le détecter à chaque fois qu'il s'en sert je crois, ce qui ralenti le code... Mais bon cela dépend du code autant dans votre cas "s'est transparent"

@ bientôt

LouReeD

Rechercher des sujets similaires à "vba max"