erreur: type d'argument byref incompatible

Excel.Deb

XLDnaute Nouveau
Bonjour,
Je souhaite réaliser une macro qui effectue la somme arithmétique avec coefficient et retourne le résultat dans une cellule déterminée.
cependant,le débogeur me sort l'erreur type d'argument byref incompatible.
voici le code:
Function minimiser_dm(i As Integer, m As Integer) As Integer
Dim duree As Variant
Dim dm As Long

dm = 0

For i = 1 To m
dm = dm + (m - i + 1) * Cells(i, 4)
Next i

duree(1, 2) = dm

End Function
Sub macro_somme()

Call minimiser_dm(i, m)

End Sub
Merci de bien vouloir détecter la faille
 

Dranreb

XLDnaute Barbatruc
Votre variable duree n'est pas dimensionnée comme un tableau alors vous ne pouvez pas spécifier d'indices.
Vraiment incompréhensible ce que vous voulez faire.
Ne pourriez vous joindre un tout petit exemple de résultat attendu sur un petit nombre de données, uniquement ce qui intervient dans le calcul ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
La fonction calculant la formule en encadré s'écrirait comme ça :
VB:
Option Explicit
Function dm(ByVal R As Range, Optional ByVal m As Long) As Double
   Dim t(), S As Double, i As Long
   If R.Rows.Count = 1 Then ReDim t(1 To 1, 1 To 1): t(1, 1) = R.Value Else t = R.Value
   If m = 0 Then m = UBound(t, 1)
   For i = 1 To m: S = S + (m - i + 1) * t(i, 1): Next i
   dm = S / m
   End Function
Je déteste utiliser des noms de variables ne commençant pas par une majuscule. Mais puisque les matheux font comme ça …
Écrite dans une cellule cette formule renvoie 2,96770751 :
Code:
=dm($D$2:$D$182)
 
Dernière édition:

Excel.Deb

XLDnaute Nouveau
c'est un code qui marche à merveille,merci Dranreb!
dernière question:si je souhaite implémenter cette fonction dans une macro,au moment du call dm( , ) quels seront les arguments à écrire tant qu'ils ont été appelés par valeur?
 

Dranreb

XLDnaute Barbatruc
Il ne faut pas utiliser Call dm, il faut affecter à une variable ou à une propriété = dm(ActiveSheet.[D2: D182], m)
Le m est facultatif: s'il n'est pas précisé c'est le nombre de lignes de la plage qui est assumé.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50