OVH Cloud OVH Cloud

Range Excel et Tableau VB

2 réponses
Avatar
agrimbert
Bonjour,

Je construis une xla contenant des fonctions qui doivent pouvoir =EAtre
appel=E9es depuis des fonctions ou proc=E9dures VB et depuis des feuilles
XL

Il s'agit essentiellement de fonctions de calculs matriciels, les
param=E8tres =E0 passer sont donc soit des tableaux, soit des objets
'Range', en g=E9n=E9ral des vecteurs

Mon probl=E8me se situe au niveau de la d=E9claration de ces param=E8tres
: sachant que je dois transposer si n=E9cessaire ces vecteurs, j'utilise
UBound et LBound, mais dans ce cas je ne peux plus directement passer
des objets 'Range' : comment garder ces fonctions accessibles dans XL ?
Faut-il les dupliquer (une version tableau VB, une version Range XL) ?

Ou passer par un module de "transformation" Range<->Tableau ?

A+

CL

2 réponses

Avatar
bourby
bonjour,

et si pour chaque plage tu créais un tableau; tu le redimensionnes au
nombre de cellules du vecteur puis tu écris monTableau=range(xxx); à
partir de là, tu travailles uniquement sur des tableaux.

Cordialement

Bourby




agrimbert wrote:
Bonjour,

Je construis une xla contenant des fonctions qui doivent pouvoir être
appelées depuis des fonctions ou procédures VB et depuis des feuilles
XL

Il s'agit essentiellement de fonctions de calculs matriciels, les
paramètres à passer sont donc soit des tableaux, soit des objets
'Range', en général des vecteurs

Mon problème se situe au niveau de la déclaration de ces paramètres
: sachant que je dois transposer si nécessaire ces vecteurs, j'utilise
UBound et LBound, mais dans ce cas je ne peux plus directement passer
des objets 'Range' : comment garder ces fonctions accessibles dans XL ?
Faut-il les dupliquer (une version tableau VB, une version Range XL) ?

Ou passer par un module de "transformation" Range<->Tableau ?

A+

CL



Avatar
Ange Ounis
Une plage est un tableau _à deux dimensions_ et de base 1. Pour utiliser LBound
et UBound avec un tableau à 2 dimensions, il ne faut pas oublier de passer la
dimension voulue en paramètre :

Sub essai()
Dim Arr, i&
For i = 1 To 10
Range("A" & i).Value = "zaza" & i
Next
Arr = Range("A1:A10")
For i = LBound(Arr, 1) To UBound(Arr, 1)
MsgBox Arr(i, 1)
Next
End Sub

Dans Excel, les fonctions VBA qui renvoient un tableau (fonction qui doivent
être déclarées en Variant) sont à valider comme une formule matricielle, avec la
combinaison de touches Ctrl+Alt+Maj.

----------
Ange Ounis
----------

Bonjour,

Je construis une xla contenant des fonctions qui doivent pouvoir être
appelées depuis des fonctions ou procédures VB et depuis des feuilles
XL

Il s'agit essentiellement de fonctions de calculs matriciels, les
paramètres à passer sont donc soit des tableaux, soit des objets
'Range', en général des vecteurs

Mon problème se situe au niveau de la déclaration de ces paramètres
: sachant que je dois transposer si nécessaire ces vecteurs, j'utilise
UBound et LBound, mais dans ce cas je ne peux plus directement passer
des objets 'Range' : comment garder ces fonctions accessibles dans XL ?
Faut-il les dupliquer (une version tableau VB, une version Range XL) ?

Ou passer par un module de "transformation" Range<->Tableau ?

A+

CL