Écriture de valeurs de tableau dans une feuille de calcul

J'ai pu écrire les valeurs dans le tableau x (n, 3) si j'entre dans l'UDF ci-dessous sous forme de tableau. (L'UDF ci-dessous n'est utilisé qu'à des fins de démonstration. La tâche réelle implique des changements fréquents de la dimension de tableau déterminée par le nombre n). Au lieu d'entrer l'UDF comme formule de tableau en mettant en surbrillance la plage (en plus de 150 lignes) chaque time, j'essaie d'automatiser le process en utilisant la fonction "Redimensionner". Je reçois "#Value!" erreur dans la cellule "K1". Il me donne aussi "#Value!" si je saisis l'UDF comme formule de tableau.

S'il vous plaît donnez votre avis.

Function Loadnumbers(n%, alpha#) Dim Destination As Range Set Destination = Range("K1") Dim I As Integer ReDim x(n, 3) As Double For I = 1 To n For J = 1 To 3 x(I, J) = (x(I, 1) + 1) * alpha x(I, J) = (x(I, 1) + 2) * alpha x(I, J) = (x(I, 2) + 2) * alpha Next J Next I Destination.Resize(UBound(x, 1), UBound(x, 3)).Value = x() 'The above statement gives me "#Value!" error either in a single cell ("K1") or the array. 'Loadnumbers = x() 'The above statement works using this statement as I enter as an array formula End Function 

Vous ne pouvez pas modifier avec une fonction le contenu d'autres cellules: https://support.microsoft.com/en-us/kb/170787

Si vous souhaitez modifier une autre cellule, vous devrez utiliser un sous. Si vous couplez le sous-type avec un événement (par exemple Worksheet_Change ou Worksheet_SelectionChange), vous pouvez get un résultat similaire. Mais pour éviter de ralentir votre Excel trop, je reorderais que seul le changement ou quelques cellules sur la feuille puissent triggersr un tel événement. Exemple:

 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:C4")) Is Nothing Then Exit Sub Application.EnableEvents = False 'Do you things Application.EnableEvents = True End Sub