Par défaut, UDF de ( lien: / vba-exemples-utilisateur-fonction définie [Fonctions définies par l’utilisateur]) dans Excel VBA ne sont pas volatiles. Ils ne sont recalculés lorsque l’un des arguments de la fonction change. Une fonction volatile est recalculée chaque fois que le calcul se produit dans les cellules de la feuille de calcul. Jetons un coup d’oeil à un exemple facile à expliquer un peu plus.

  1. Ouvrez l’éditeur Visual Basic et cliquez sur Insérer, Module.

Créer une fonction appelée MyFunction qui retourne la somme de la cellule sélectionnée et la cellule en dessous de cette cellule.

  1. Ajoutez les lignes de code suivantes:

Function MYFUNCTION(cell As Range)

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Vous pouvez maintenant utiliser cette fonction, comme toute autre fonction Excel.

Non-volatile Function in Excel VBA

  1. Cette fonction est non volatile. Les fonctions non volatiles ne sont recalculés lorsque l’un changement des arguments de la fonction. Modifiez la valeur de la cellule B2 à 8.

Function’s Argument Changes

  1. Maintenant, changer la valeur de la cellule B3 à 11.

Any Other Cell Changes

Explication: la fonction non-volatile est pas recalculée lorsque toute autre cellule de la feuille change.

  1. Mise à jour de la fonction suivante pour rendre la fonction volatile:

Function MYFUNCTION(cell As Range)

Application.Volatile

MYFUNCTION = cell.Value + cell.Offset(1, 0).Value

End Function
  1. Modifiez la valeur de la cellule B3 à 12.

Résultat:

Volatile Function in Excel VBA

Remarque: vous devez saisir à nouveau la fonction pour le rendre volatile (ou le rafraîchir en plaçant votre curseur dans la barre de formule et appuyez sur Entrée).