Définir une dépendance qui n'est pas l'un des parameters d'input d'un UDF?

En bref: Existe-t-il un moyen de définir une dépendance qui n'est pas l'un des parameters d'input d'un UDF?

Ceci est ma première publication ici. J'apprends VBA dans Excel et j'ai vu un grand nombre de codeurs très talentueux publier ici, alors voici:

Je veux savoir comment créer un UDF qui dépend d'une gamme de cellules, mais l'user ne doit pas entrer cette gamme de cellules. Un exemple simple serait une fonction qui prend toujours la cellule "A1" et concatène l'input à A1 comme sortie. Si la plage a été référencée de manière statique à l'intérieur d'un UDF, alors la cellule "A1" est effacée par l'user, la gamme ne se transformerait pas en "#REF".

Si A1 = "Bonjour", puis l'input est "Monde", je veux que la sortie soit "Bonjour Monde".

Je pensais peut-être que je pourrais appeler une fonction dans une fonction et l'tree de dépendance serait construit en fonction de cela (voir ci-dessous), mais ma fonction de test ne sera pas mise à jour à less que je change le paramètre d'input pour la première fonction appelée (in1).

Code d'essai:

Public Function test(in1 As Ssortingng) As Ssortingng test = testdep(in1, Sheets("Sheet1").Range("A1")) End Function Private Function testdep(in1 As Ssortingng, rng As Range) testdep = rng.Value & in1 End Function 

Des idées?

Edit1: pour être plus précis, je souhaite que la fonction mette à jour la valeur de sortie lorsque la cellule "A1" est modifiée, même si la cellule A1 n'est pas un paramètre d'input. Par exemple, je change A1 pour être maintenant "blah" au lieu de "Hello", alors la valeur serait mise à jour vers "blah World". Je rendrais la fonction volatile, mais j'ai beaucoup de fonctions comme ça et la vitesse de calcul est très grogue.

Il n'y a que 2 façons dont je sais pour faire un UDF recalculer quand une cellule change qui est utilisée dans l'UDF mais n'est pas dans la list des parameters:
– rendre l'UDF volatile
– définissez workbook.forcecalculation à true

Ces deux solutions font que l'udf calcule à chaque calcul: le calcul complet de la force est encore plus drastique – il éteint le récapitulatif intelligent et fait calculer chaque formule

Vous n'avez pas besoin de spécifier quoi que ce soit en tant que paramètre. Quelque chose comme ça fonctionne comme un charme:

 Public Function CombineHelloAndWorld() As Ssortingng CombineHelloAndWorld = Range("A1") & " " & Range("A2") End Function 

Disons que vous avez "Bonjour" dans [A1] et "Monde" dans [A2] . Dans la cellule [A3] vous écrivez =CombineHelloAndWorld() et il vous donne "Hello World".

De plus si Application.Calculation est définie sur xlCalculationAutomatic , elle changera automatiquement [A3] si vous modifiez soit [A1] soit [A2]