En fait, la plage d'entrée est plus grande que la plage réelle requise pour la formule matricielle. Donc, ce serait bien si la réponse comprend également le code pour redimensionner la gamme avant de remplir avec la formule de tableau.Comment remplir une plage dans une feuille de calcul Excel avec une formule matricielle en utilisant VBA?
1
A
Répondre
1
Cela semble fonctionner pour moi
Call rng.Clear
Dim rngState As Range
Set rngState = rng.Resize(nRowCount, nColumnCount)
rngState.FormulaArray = "whatever_array_formula"
rngState.Calculate
0
Ce que je cherchais, mais juste ma version plus approfondie étant donné que le tableau a déjà été peuplée:
Sub PasteArray(vTheArray As Variant)
Dim rPasteHere As Range
With ActiveWorkbook
Set rPasteHere = .Sheets("PayRoll").Range("A1").CurrentRegion 'Assign the region to use
With rPasteHere
.Clear 'Wipe the current region clean
Set rPasteHere = .Resize(UBound(vTheArray, 1) + 1, UBound(vTheArray, 2) + 1) 'Resize the region to your input
.FormulaArray = vTheArray 'Dump the array into the resized region
End With
End With
Set rPasteHere = Nothing 'Clean up!
End Sub
Rappelez-vous que les tableaux sont basés zéro , donc le +1 dans la fonction .Resize. Pour mon application j'ai codé en dur le nom de la feuille et la gamme si naturellement comment rPasteHere vient à l'individu.