Ah oué, carrément
, pourtant j'avais essayé il me semble et ça marchait pas au tout début 
Puis je suis parti dans des modife pour tout gérer hors VBA (plage de cellule avec le texte en cellule pour éviter d'ouvrir l'éditeur VBA histoire d'être totalement tranquille) et puis ça à marché
!
EDIT: Mais attention, il manque quand même la petite sécurité au niveau de l'option de calcul qu'il faut insérer entre :
[I2].AutoFill Destination:=[I2:I8], Type:=xlFillDefault
et
Sinon, ça pourrai ne pas marcher 
En tout cas, merci bien 
A+ et encore merci !
C'est assez incroyable, mais je n'ai vu aucune formule sur le net utilisant des constantes à l'intérieur des fonctions sumprod, ni même de fonction autre que des plages avec un signe égale après les plages. Tous les sites que j'ai vu parlaient toujours de plages 100% identiques en dimensions et sans fonctions spécifique à l'intérieur des plages.
Ça mériterai bien une contribution sur l'utilisation des sumproduct qui ont l'air difficile en VBA. Mais je ne l'a ferai pas, si quelqu'un veux en faire une, ça pourrai aider je pense, parce que ce genre de fonction est super galère en VBA. Les fonctions sinus par exemple ne prennent pas en charge les plages de données en VBA alors qu'il n'y a aucun problème en Excel.
EDIT:

Envoyé par
SMBeccaria
Peut-être que cette forme te conviendra.
La premiere valeur attendue est un scalaire, les trois autres sont des vecteurs (de même longueur):
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Public Function MyCalculous2(myDriver As Range, myConst_B As Range, myConst_C As Range, myConst_D As Range) As Double
Dim i As Integer
Dim Dbl_outPutrange As Double
Dim pi As Double
pi = 3.1416
Dbl_outPutrange = 0
For i = 1 To myConst_B.Count
Dbl_outPutrange = Dbl_outPutrange + myConst_B(i) * Math.Sin(myConst_C(i) * myDriver.Value + myConst_D(i) * pi / 180)
Next i
MyCalculous2 = Dbl_outPutrange
End Function |
Je viens de tester la fonction, et nickel, elle fonction bien. Mais elle est forcément limité avec un Sin et un radians, ce qui empêcherai de l'utiliser avec d'autres fonctions (Signe, Cos ou sans Radians par exemple). Mais elle fonctionne rapidement en tout cas. A mettre de coté donc.
RePS:
J'ai testé la Fonction SOMMEPROD avec le timer:
Test n°1
2000 valeurs de A
1000 valeurs de C,D,E
Timer = 1,08s ; 1,23 s ; 1,77 s ; 1,47 s pour les 4 essais
Test n°2
400 000 valeurs de A
8000 valeurs de C, D, E
Timer = 33,125 s
Questions:
Ça nous donne combien de multiplications et combien d'additions tous ça en excluant les fonctions RAD et SIN ?
(1+2) x 8000 x 400 000 = 9 600 000 000 Multiplications en 33s ? Ou je me trompe complètement ? Ça parait gros.
Partager