Affichage d un tableau retourne par une fonction - VB/VBA/VBS - Programmation
Marsh Posté le 16-07-2010 à 11:54:21
Oui c'est normal, il est nécessaire d'utiliser la fonction INDEX.
Dans Excel, tape par exemple :
=INDEX(test();1;2) ... Il devrait te renvoyer 4.
Il n'est pas possible de taper test() dans la cellule D2 et d'avoir les cellules D2, D3, E2, E3 qui se remplissent
Marsh Posté le 16-07-2010 à 12:07:08
Merci de ton aide, effectivement cela m affiche bel et bien 4.
Cependant le remplissage de plusieurs cases par une fonction est possible.
L API bloomberg le fait (c est une application de donnees financieres) mais l acces aux sources est protege. La solution serait elle de mettre par exemple dans le code:
....
toto = 2 'la valeur de la premiere case de la matrice
call procedure_qui_remplit_les_autres_cases(coord_case_courante, toto)
....
Encore merci de ton aide
Marsh Posté le 19-07-2010 à 11:30:58
Non le remplissage de cellules par une fonction n'est pas possible, du moins pas directement. Peut etre sous 2007, pas fait l'essai.
La preuve, tu parles d'API. Or, une API, d'où son nom n'est pas natif à Excel.
Parcontre, tu peux, detecter une modification sur la cellule, si elle contient ta fonction, tu recuperes le resultat et en fonction tu t'occupes de tes cellules.
Exemple :
Une fonction toute bete qui renvoit une valeur d'un tableau.
Code :
|
Donc si Element = 0 ca renvoit "a", Element = 1 ca renvoit "b" etc.
En A1 tu saisis : 0
En D2 tu saisis : =MonTableau(A1)
D2 renvoit bien "a"
Ensuite tu vas dans VBA, sur ta feuille :
Code :
|
Donc en gros, tu entres ta fonction dans une cellule
Il calcule le resultat de la fonction
Et en fonction du resultat (dans cette meme cellule) il va mettre youpi dans la cellule d'a coté, en rouge.
Ca devrait te donner des pistes.
Marsh Posté le 20-07-2010 à 22:32:33
Je pense avoir trouvé : Il faut écrire la fonction entre accolades {} ... ça permet d'écrire une matrice sous excel... Je détaillerai ça demain.
Marsh Posté le 22-04-2013 à 20:24:31
salut pepito_mi_corazon
En fait, j'ai le même problème , ma fonction comprend beaucoup de boucle et ça prend beaucoup de temps pour le calcul, son résultat est une matrice de 2 ligne et de 6 colonnes, avec la fonction index ça marche mais, je veux bien si tu te souviens de ta solution avec les accolades {}, pour faire les boucle une fois mais pas 12 fois (pour chaque éléments) avec la fonction INDEX. je me suis dit que ça va marchera mieux avec cette solution des accolades {} pour optimiser le temps 12 fois moins. merci d'avance
Marsh Posté le 16-07-2010 à 08:14:07
Bonjour,
Je debute la programmation vba pour excel et je suis confronte a un probleme. J essaie de creer une fonction test() qui retourne un tableau. Lorsque je fais appel a cette fonction dans une cellule de ma feuille excel j aimerais que le tableau s affiche dans les cellules adjacentes a la cellule appelante. En pratique je fais par exemple
Function test() As Variant
Dim toto(1 To 2, 1 To 2) As Variant
toto(1, 1) = 2
toto(2, 2) = 3
toto(1, 2) = 4
toto(2, 1) = 5
test = toto
End Function
Et lorsque j appelle en D2 (par exemple) =test() seule la case D2 contient toto(1,1) c est a dire la valeur 2.
J utilise excel 2002.
Est ce normal ? Y a t il quelquechose que je n ai pas compris ?
Merci
Paf le chiot
Message édité par paflechiot le 16-07-2010 à 09:33:04