Actualiser les résultats de la fonction Excel VBA
Est-ce que quelqu'un sait comment je peux obtenir une fonction définie par l'utilisateur pour se réévaluer (en fonction des données modifiées dans la feuille de calcul)? J'ai essayé F9 et Maj+F9, mais ceux-ci ne fonctionnent pas. La seule chose qui semble fonctionner est d'éditer la cellule avec l'appel de fonction, puis d'appuyer sur Entrée. Des idées? Il me semble me rappeler d'être capable de faire cela...
8 réponses
Vous devriez utiliser Application.Volatile
en haut de votre Fonction:
Function doubleMe(d)
Application.Volatile
doubleMe = d * 2
End Function
Il sera ensuite réévalué chaque fois que le classeur change (si votre calcul est défini sur Automatique).
Quelques informations supplémentaires sur les raccourcis clavier F9 pour le calcul dans Excel
- F9 Recalcule toutes les feuilles de calcul dans tous les classeurs ouverts
- Maj+ F9 Recalcule la feuille de calcul active
- Ctrl+Alt+ F9 Recalcule toutes les feuilles de calcul dans tous les classeurs ouverts (Plein de recalcul)
- Maj + Ctrl+Alt+ F9 Reconstruit l'arbre des dépendances et un recalcul complet
OK, j'ai trouvé celui-ci moi-même. Vous pouvez utiliser Ctrl+Alt+F9 pour accomplir cette tâche.
Si vous incluez toutes les références aux données de la feuille de calcul dans la liste des paramètres UDF, Excel recalculera votre fonction chaque fois que les données référencées changent:
Public Function doubleMe(d as variant)
doubleMe=d*2
end Function
Vous pouvez également utiliser L'Application.Instable, mais cela a l'inconvénient de faire toujours recalculer votre UDF, même quand il n'a pas besoin parce que les données référencées n'a pas changé.
Public Function doubleMe()
Application.Volatile
doubleMe=Worksheets("Fred").Range("A1")*2
end Function
Pour passer en Automatique:
Application.Calculation = xlCalculationAutomatic
Pour passer au Manuel:
Application.Calculation = xlCalculationManual
Cela fonctionne bien celui - ci pour actualiser le calcul mieux que la plage(A:B).Calculer
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
Public Sub UpdateMyFunctions()
Dim myRange As Range
Dim rng As Range
'Considering The Functions are in Range A1:B10
Set myRange = ActiveSheet.Range("A1:B10")
For Each rng In myRange
rng.Formula = rng.Formula
Next
End Sub
Le Application.Volatile
ne fonctionne pas pour recalculer une formule avec ma propre fonction à l'intérieur. J'utilise la fonction suivante:
Application.CalculateFull