Retourner un objet RANGE avec une fonction

Bonjour,

je voudrais programmer une fonction qui calcule un produit vectoriel, qui fonctionnerait un peu comme la fonction produitmat.

Pas de problème pour récupérer les coordonnées des 2 vecteurs arguments de type RANGE, mais je n'arrive pas à remplir la variable RANGE de sortie.

dans l'aide le type RANGE ne fait pas partie des types cités comme possibles en sortie, mon problème vient-il tout simplement de là, ce que je veux faire est-il impossible ?

Pourtant la fonction produitmat doit bien retourner quelque chose comme un RANGE, non ?

voilà un extrait de code qui ne marche pas (message #valeur dans la cellule résultat) :

Function produitvec(vec1 As Range, vec2 As Range) As Range

x1 = vec1.Cells(1, 1)

produitvec.Cells(1, 1).Value = y1 * z2 - y2 * z1

end function

Si quelqu'un peut m'aider, merci !

Ludovic

Bonsoir

sans voir tout le code, pas évident, mais si tu cherches un produit matriciel, tu ne peux obtenir un objet Range...

Je te propose (à partir de ton code simplifié...)

Function produitvec(vec1 As Range, vec2 As Range) As Long
x1 = vec1
'...
produitvec = y1 * z2 - y2 * z1
'...
End Function

et dans une cellule :

=produitvec(A1;A2)

Edit, si tes nombres sont entiers, tu peux utiliser la déclaration en Long

S'ils ce sont des nombres décimaux, utilises la variable Double

Merci pour ta réponse !

Effectivement je n'ai pas mis assez de code, je pensais que le "as range" suffisait à expliquer mon idée...

Un produit vectoriel prend 2 vecteurs (à 3 composantes dans mon cas) et retourne un troisième vecteur à 3 composantes. Mon idée est donc que ma fonction retourne une variable de type matrice à 3 lignes. Ensuite je veux utiliser ma fonction comme j'utilise la fonction produitmat, en entrant la fonction "sous forme de format matriciel", comme il est écrit dans l'aide de la fonction produitmat.

J'ai essayé le type RANGE comme variable de sortie parce que c'est le seul que je connaissais, mais ça ne marche pas.

J'ai continué à fureter sur le web, et j'ai fini par tomber indirectement sur un exemple chez microsoft qui ressemblait à mon besoin, et en l'adaptant un peu ça marche. Il faut utiliser un tableau et le type Variant en sortie (voir le code en fin de post). Ensuite la fonction s'utilise comme n'importe quelle fonction matricielle.

Merci en tous cas pour l'aide !

Ludo

Function produitvec(vec1 As Range, vec2 As Range) As Variant

Dim tmp(1 To 3, 1) As Variant

x1=...

tmp(1, 0) = y1 * z2 - y2 * z1

tmp(2, 0) = z1 * x2 - z2 * x1

tmp(3, 0) = x1 * y2 - x2 * y1

produitvec = tmp

End Function

Rechercher des sujets similaires à "retourner objet range fonction"