J'ai une série de fonctions pour chacune des colonnes listobject. Le fichier est lourd et plante, donc je veux juste garder les résultats de chaque formule en tant que valeurs statiques. Je peux allouer des formules à la gamme et demander à Excel de convertir la gamme en valeur. Mais je me demande s'il existe un moyen de demander à VBA d'écrire uniquement les valeurs statiques dans la plage au lieu de la formule elle-même. Voici ce que j'ai jusqu'à présent:comment écrire les résultats d'une formule directement dans une plage Excel par code VBA
Sub calculate2()
Dim i As Long, t As Long
t = Timer
With Sheet3.ListObjects(1)
For i = 3 To 9
.ListColumns(i).DataBodyRange.ClearContents
.Range.Cells(2, i).Formula = sheets3.range("formula").cells(i,1).formula
.ListColumns(i).DataBodyRange = .ListColumns(i).DataBodyRange.Value
Next i
End With
Debug.Print Timer - t
End Sub
Avez-vous essayé '.Range.Cells (2, i) .Value =. ListColumns (i) .Total'? – UGP
Hé, En fait, je n'utilise que la ligne totale pour garder mes formules. quelque chose comme ceci est stocké là. '= IFERROR (SI (COUNTIFS ('ZZ84'! $ B: $ B, [@ WO], 'ZZ84'! $ E: $ E," = * V99 ", 'ZZ84'! $ L: $ L , "<>") = 1,1, SI (SUMIFS ('ZZ84'! $ G: $ G, 'ZZ84'! $ B: $ B, [@ WO], 'ZZ84'! $ L: $ L, "")/((SUMIFS ('ZZ84'! $ G: $ G, 'ZZ84'! $ B: $ B, [@ WO]))/10)/10 = 1,0,1-SUMIFS ('ZZ84 '! $ G: $ G,' ZZ84 '! $ B: $ B, [@ WO],' ZZ84 '! $ L: $ L, "")/((SUMIFS (' ZZ84 '! $ G: $ G , 'ZZ84'! $ B: $ B, [@ WO]))/10) /10-0.01)), "")) 'J'ai changé le code. La formule est une chaîne de texte commençant par = –