Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Figer des calculs volatiles

1 réponse
Avatar
HD
Bonjour,

Je cherche à... figer des calculs de fonctions volatiles VBA. Mais est
ce seulement possible ?

J'utilise un classeur avec énormément de calcul, il est passé en calcul
manuel, j'ai essayé d'optimiser au mieux.

J'ai, par exemple des formules sur mes cellules du style :
=MaFonction(A1)+B1
Avec 30 en B1. Si le résultat de MaFonction(A1) est 20 j'obtiens donc
50.

Je voudrais empêcher le calcul de MaFonction tout en lui conservant sa
valeur et en permettant à l'utilisateur de saisir ses chiffres en B1.
L'utilisateur saisie 60 en B1 et l'on a alors 80.

J'ai sur ce classeur un très grand nombre de formules et donc de
calculs. Figer les résultats des fonctions seraient donc intéressant.
J'ai tenté d'ajouter un contrôle dans ma fonction VBA pour lui dire que
si "calculé" apparait sur ma feuille en K1 alors l'on sort de la
fonction mais... cela a pour effet de donner en résultat 0.

Est ce que mon idée est faisable ?

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com

1 réponse

Avatar
GL
Le 26/02/2015 16:37, HD a écrit :
Bonjour,

Je cherche à... figer des calculs de fonctions volatiles VBA. Mais est
ce seulement possible ?



Ca dépend. Volatile est une propriété pour une fonction. Vous ne pourrez
pas changer cette propriété pour les fonctions fournies par Excel.

Si MaFonction est une fonction VBA, alors elle est volatile dans la
mesure où vous avez déclaré: Application.Volatile [=True] au tout début
du corps de votre fonction. Dans ce cas vous devriez maîtriser cette
propriété...

J'utilise un classeur avec énormément de calcul, il est passé en calcul
manuel, j'ai essayé d'optimiser au mieux.

J'ai, par exemple des formules sur mes cellules du style :
=MaFonction(A1)+B1
Avec 30 en B1. Si le résultat de MaFonction(A1) est 20 j'obtiens donc 50.

Je voudrais empêcher le calcul de MaFonction tout en lui conservant sa
valeur et en permettant à l'utilisateur de saisir ses chiffres en B1.
L'utilisateur saisie 60 en B1 et l'on a alors 80.

J'ai sur ce classeur un très grand nombre de formules et donc de
calculs. Figer les résultats des fonctions seraient donc intéressant.
J'ai tenté d'ajouter un contrôle dans ma fonction VBA pour lui dire que
si "calculé" apparait sur ma feuille en K1 alors l'on sort de la
fonction mais... cela a pour effet de donner en résultat 0.

Est ce que mon idée est faisable ?



Il faudrait en savoir un peu plus sur MaFonction. Par exemple, pour
fixer les idées si ça peut vous être utile :

Function Aleatoire#(Optional isVolatile As Boolean = True)
Application.Volatile (isVolatile)
Aleatoire = Rnd()
End Function

Cette fonction sera volatile si vous utilisez :

=Aleatoire() dans une cellule

Mais elle ne le sera pas si vous utilisez :

=Aleatoire(FAUX)


Avec ce moyen, vous pouvez définir une cellule (ou un nom) dont
le contenu sera VRAI ou FAUX et MaFonction aura un paramètre
(éventuellement optionnel) qui prendra sa valeur dans cette cellule.

Ainsi, si vous inscrivez VRAI, MaFonction sera volatile et si vous
inscrivez FAUX, elle ne le sera pas.


En espérant que cela vous aura aidé...
Cordialement.