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...

58
demandé sur ashleedawg 2008-08-14 17:54:43

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).

99
répondu vzczc 2015-08-28 16:33:28

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
31
répondu Robert Mearns 2013-07-21 17:58:18

OK, j'ai trouvé celui-ci moi-même. Vous pouvez utiliser Ctrl+Alt+F9 pour accomplir cette tâche.

13
répondu Brian Sullivan 2015-04-21 15:33:04

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
9
répondu 2008-09-29 15:52:31

Pour passer en Automatique:

Application.Calculation = xlCalculationAutomatic    

Pour passer au Manuel:

Application.Calculation = xlCalculationManual    
1
répondu ayman 2014-12-03 19:22:59

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
1
répondu MfJ 2015-06-10 00:32:07
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
-1
répondu Prashanth 2014-10-22 12:34:53

Le Application.Volatile ne fonctionne pas pour recalculer une formule avec ma propre fonction à l'intérieur. J'utilise la fonction suivante: Application.CalculateFull

-2
répondu alex303411 2017-11-21 09:12:20