Cette fonction très simple:Dans VBA, comment retourner un tableau/ou écrire dans des cellules en utilisant une fonction?
Function WriteArray() as Variant
Dim array(0 To 2)
array(0) = "A"
array(1) = "B"
array(2) = "C"
WriteArray = array
End Function
Je me attendais à voir dans le résultat du tableau entier dans ma feuille de calcul Excel, mais ce n'est pas le cas: je ne reçois que la première chaîne. Je sais qu'il est astuce d'afficher tout le tableau dans la feuille de calcul (en sélectionnant une plage de cellules avec la formule + F2 + CTRL + MAJ + ENTRÉE), mais je préférerais que VBA gère tout cela.
J'ai également essayé d'utiliser la variable Application.Caller pour écrire directement dans la plage "Caller" mais le code casse.
Merci beaucoup pour votre aide!
EDIT: Voici un autre code que j'ai essayé d'utiliser:
Function WriteArray() As Variant
Dim arr(0 To 2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
WriteArray = arr
Dim StartRow, i As Integer
For i = 0 To UBound(arr)
Range("A" & i).Value = arr(i)
Next
End Function
Il brise la ligne "Range (" A "& i) .Value = arr (i)". Est-ce que mon Excel est cassé ?!
En fait, cela ne fonctionne pas, le code VBA casse à "Range (" A "& i + StartRow) .Value = MyArray (i)" ... c'est mon problème aussi. Ce code fonctionne-t-il sur votre Excel? J'utilise Excel 2003. –
Cela a fonctionné parfaitement dans Excel 2003. Changez chaque "tableau" dans votre code de début en un autre nom de variable qui n'est pas un mot réservé, comme AbcList ou quelque chose du genre. – Eric
Pourtant, il se casse ... J'utilise exactement ce code: Fonction WriteArray() As Variant Dim arr (0 à 2) arr (0) = "A" arr (1) = "B" arr (2) = "C" WriteArray = arr Dim StartRow, i As Integer Pour i = 0 à UBound (arr) Range ("A" & i) .Value = arr (i) Suivant End Function A "Range (" A "& i) .Value = arr (i)", il sort juste le code, même sans jeter d'erreurs ... n'a pas de sens pour moi :( –