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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 ?
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
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
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 ?
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 ?