OVH Cloud OVH Cloud

Fonction personnalisée renvoyant un vecteur

2 réponses
Avatar
Charles
Bonsoir,

Je suis en train de ré-écrire des macros XL4 en VBA ( il y a un début à tout
...)

en XL4 on peut renvoyer un résultat sous forme de vecteur en mettant
=RESULTAT(64) en début de fonction,
on définit les cellules par =POSER.NOM("RESULTAT";E3:G3)
on fait les calculs souhaités,
on retourne les valeurs par '=RETOUR(RESULTAT)

Je ne sais pas comment on retourne un résultat vectoriel en VBA ?

Merci d'avance

2 réponses

Avatar
Alain CROS
Bonjour

On peut utiliser le type variant qui est celui utilisé par défaut.

Un petit exemple :

Sur une feuille macro

A1 =RESULTAT(64)
A2 =RETOUR(Feuil1!E3:G3)
Insertion Nom Définir
Noms dans le classeur:
FonctionXL4
Fait référence à:
=Macro1!$A$1
Macro
Fonction

Dans un Module Vba

Function FonctionVBA() As Variant
FonctionVBA = [Feuil1!E3:G3]
End Function

Ces 2 fonctions sont équivalentes

Sur Feuil1
E3 = 1
F3 = 2
G3 = 3

Sur Feuil2

Sélectionner A1:C1
Insertion fonction Personnalisées
FonctionXL4
Valider en matricielle

Sélectionner A3:C3
Insertion fonction Personnalisées
FonctionVBA
Valider en matricielle

Alain CROS

"Charles" a écrit dans le message de news: 41aa3c3e$0$5776$
Bonsoir,

Je suis en train de ré-écrire des macros XL4 en VBA ( il y a un début à tout
...)

en XL4 on peut renvoyer un résultat sous forme de vecteur en mettant
=RESULTAT(64) en début de fonction,
on définit les cellules par =POSER.NOM("RESULTAT";E3:G3)
on fait les calculs souhaités,
on retourne les valeurs par '=RETOUR(RESULTAT)

Je ne sais pas comment on retourne un résultat vectoriel en VBA ?

Merci d'avance






Avatar
Charles
Bonsoir,
Merci pour ces infos.
Ce n'est pas exactement ce que je cherchais.
J'ai trouvé le principe sur le site de http://frederic.sigonneau.free.fr/
que je remercie.

function test(arg1,arg2,arg3) as variant
res1 = worksheetfunction.vlookup(arg1,[feuil1!_base],3,True)
res2 = worksheetfunction.vlookup(arg1,[feuil1!_base],4,True)
res3 = worksheetfunction.vlookup(arg1,[feuil1!_base],5,True)
dim matres as variant
matres = array(res1,res2,res3) <--- met les résultats dans une matrice
test = matres <--- renvoie la matrice
end function

Autre question :
Comment à partir de :
res1 = worksheetfunction.vlookup(arg1,[feuil1!_base],3,True)
puis je obtenir la valeur juste au dessus du tableau : feuil1!_base ?
( worksheetfunction.vlookup est l'équivalent en VBA de RECHERCHEV )

Merci d'avance
Charles



"Alain CROS" a écrit dans le message de news:

Bonjour

On peut utiliser le type variant qui est celui utilisé par défaut.

Un petit exemple :

Sur une feuille macro

A1 =RESULTAT(64)
A2 =RETOUR(Feuil1!E3:G3)
Insertion Nom Définir
Noms dans le classeur:
FonctionXL4
Fait référence à:
=Macro1!$A$1
Macro
Fonction

Dans un Module Vba

Function FonctionVBA() As Variant
FonctionVBA = [Feuil1!E3:G3]
End Function

Ces 2 fonctions sont équivalentes

Sur Feuil1
E3 = 1
F3 = 2
G3 = 3

Sur Feuil2

Sélectionner A1:C1
Insertion fonction Personnalisées
FonctionXL4
Valider en matricielle

Sélectionner A3:C3
Insertion fonction Personnalisées
FonctionVBA
Valider en matricielle

Alain CROS

"Charles" a écrit dans le message de news:
41aa3c3e$0$5776$

Bonsoir,

Je suis en train de ré-écrire des macros XL4 en VBA ( il y a un début à
tout


...)

en XL4 on peut renvoyer un résultat sous forme de vecteur en mettant
=RESULTAT(64) en début de fonction,
on définit les cellules par =POSER.NOM("RESULTAT";E3:G3)
on fait les calculs souhaités,
on retourne les valeurs par '=RETOUR(RESULTAT)

Je ne sais pas comment on retourne un résultat vectoriel en VBA ?

Merci d'avance