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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.