Bonjour à tous,
Je me suis mis à VBA tout récemment dans le cadre d'un projet pour mes études.
Seulement, j'ai encore beaucoup de difficultés à appréhender ce langage notamment dans la déclaration des variables.
Dans le cas présent, je veux calculer une erreur quadratique à partir de 2 tableaux à 1 dimension (des colonnes).
Je commence donc par créer 2 variables en Public car elles vont me servir dans tout le code :
Public TabR(1 To 372, 1 To 18) As Double
Public TabExp(1 To 372, 1 To 18) As Double
Puis je remplis ces 2 tableaux avec les données excel :
Sub Creation_Tableau_R_et_Exp()
For i = 1 To 372
For j = 1 To 18
TabR(i, j) = Cells(i + 2, j + 2)
TabExp(i, j) = Cells(i + 2, j + 22)
Next
Next
'MsgBox TabR(372, 18)
End Sub
C'est là que je crée une fonction qui va prendre en argument 2 tableaux quelconque et faire le calcul voulu :
Function EQmin(T1 As Range, T2 As Range)
Dim T1 As Variant, T2 As Variant
Dim x As Double
Dim T(1 To 372) As Double
'x est la sommes des erreurs au carrés pour un t et un i fixé
For i = 1 To 372
x = 0
For j = 1 To 18
x = (T1(i, j) - T2(i, j)) ^ 2 + x
Next
T(i) = x
Next
EQmin = T
End Function
Enfin j'essaie de voir ce que ça donne en évaluant la 1ère case :
Sub Test_de_EQmin()
Dim x As Double
x = EQmin(TabR, TabExp)(1)
MsgBox x
End Sub
Et là rien n'y fait j'ai un message d'erreur "type d'argument Byref incompatible" ... quelqu'un pourrait me dépanner et m'expliquer pourquoi?
Merci d'avance !
PS : je sais que je pourrais tout faire directement sans passer par une fonction mais je vais par la suite utiliser le solveur et je ne vois pas du tout comment faire si je ne passe pas par une fonction ...
Partager