Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 

harry226h

XLDnaute Junior
Bonjour Deb, le forum
Non testé mais essai ca
VB:
Function minimiser_dm()
 Dim i As Integer
 Dim m As Integer 'attribue une valeur à m
 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

cdt

A
 

Excel.Deb

XLDnaute Nouveau
Bonjour,
après exécution j'obtiens erreur d'exécution 13:incompatibilité du type.
A savoir que j'effectue la syntaxe suivante après le code fonction:

Sub macro_somme()
call minimiser_dm(i,m)
end sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pas de macro dans votre exemple.
Mettez Function minimiser_dm(ByVal i As Integer, ByVal m As Integer) As Integer
Et veillez à transmettre à l'appel des expressions ayant les valeur appropriées.
 

Excel.Deb

XLDnaute Nouveau
vous avez dit que je n'ai pas besoin d'une macro.
j'ouvre le visual basic j'écris ma fonction...à la compilation le vbe me demande d'affecter une macro à cette fonction sinon ca se compile pas.
ma question est comment je pourrais exécuter cette fonction sans passer par la macro?
 

harry226h

XLDnaute Junior
Deb,
Dranreb n'a pas dis de ne pas utiliser de macro, il disait juste qu'il n'y avais pas de macro dans ton exemple.

appel ta fonction comme ceci
VB:
Sub macro_somme()

 Call 'fonction

 End Sub
 

Excel.Deb

XLDnaute Nouveau
même erreur qu'avant:incompatibilité de type
VB:
Function minimiser_dm(ByVal i As Integer, ByVal 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

 [COLOR=rgb(250, 197, 28)]duree(1, 2) = dm[/COLOR]
minimiser_dm = duree(1, 2)
 End Function

Sub macro_somme()

Call minimiser_dm(i, m)

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…