Prbl avec application.volatile

Bonjour,

J'ai écrit une fonction personnelle qui permet de concaténer plusieurs cellules qui répondent à des critères (les critères et où sont les critères sont passés en paramètre). Elle fonctionne correctement, seulement pas quand je veux.

* Soit je mets : application volatile -> et toutes les cellules où la fonction est utilisée sont calculée dès que je modifie n'importe quelle cellule de n'importe quelle feuille de mon classeur. Même si je modifie une cellule sur une feuille qui n'a aucune lien avec la fonction ou qui ne contient aucune cellule appelant la fonction !!! --> donc je dois attendre patiemment que Excel recalcule pour rien plein de cellule

* Soit je mets :l application volatile (false) -> et même si je modifie le contenu d'une cellule appelée (passée en paramètre) par la fonction, rien ne se passe (la fonction n'est pas recalculée) . Pour forcer le recalcul, je suis obligée de faire "entrer" dans chaque cellule utilisant la fonction.

J'ai essayé en mettant uen procédure Calculate lors d'un changement de la feuille contenant les appels à la fonction : rien à faire -> le code de la fonction n'est pas exécutés (j'ai mis un point d'arrêt dans la fonction pour voir quand elle était exécutée)

Voilà, j'espère avoir été clair. Mon besoin est : comment faire que ma fonction personnelle soit calculée que lorsque : je modifie les cellules passées en paramètre.

Je ne vous mets pas le code (pour ne pas alourdir mon message) car il fonctionne (à part ce problème d'appel )

Voici la déclaration de la fonction :

Function ConcatenerVDOC(Zcri As Range, cri As String, rep As Integer, typ As Integer, decal As Integer, _

Optional poids As String = "", Optional test As String = "=") As String

les 2 façons de la déclarer volatile ou non :

Application.volatile (elle est volatile et se reclacule, même si je modifie une cellule de la fauille "toto" qui ne contient rien)

Application.volatile (False) (elle n'est pas volatile et ne se recalcule pas même si je modifie la cellule $aa4 de la feuille "stat pour com" qui est un paramètre passée à la fonction

et comment je l'appelle depuis 1 cellule de la feuille "stat pour com" :

=ConcatenerVDOC(DECALER(Feuil1!$AI$4;1;0;NBVAL(Feuil1!$A$4:$A$832)-1;1);$AA4;$AC$1;$AB$3;0)

Merci de votre aide, car j'ai cherché un peu partout et à part un calculate qui n'apporte rien, je n'ai rien trouvé.

Bonjour,

As-tu vérifié que l'option de calcul sélectionnée est bien "Automatique" ?

A+

Oui bien sur Frangy. De plus, j'ai essayé le F9 pour forcer le calcul -> aucun résultat

Et je ne sais plus comment, mais j'ai fait la manip qui fait que ma fonction apparaît dans la liste des fonctions quand tu saisis =con dans une cellule.

Bonjour

Une idée en passant

Ne mets pas l'instruction "Application.Volatile False"

Merci pour ton avis.

Si je ne mets pas application volatile false, alors dès que je touche 1 cellule du classeur, les fonctions se calculent et j'ai le temps de faire 3 fois le tour de mon bureau (bon, il pas trop grand ).

Mes 2 questions sont :

* comment faire pour faire que la fonction ne se calcule que si les cellules qui sont en paramètre sont modifiées

* ou à défaut, comment forcer, à demande (via une macro, avec quel code, puisque calculate (même des cellule contenant la fonction) ne force pas l'exécution de la fonction.) l'exécution de la fonction

Est- impossible sous Excel ?

Bonjour

Dernière idée en stock

Toujours sans Application.Volatile

Calcul manuel et F9 à la demande

Bonjour à tous,

Le calculate n'a pas d'effet sur le recalcul de la fonction (que mode de calcul soit automatique ou manuel).

Voici la solution que j'ai trouvée :

* application volatile false : pour éviter le recalcul systématique de la fonction dès qu'1 cellule du classeur évolue.

* création d'1 macro qui force le reclalcul de la fonction : pour les cellules utilisant la fonction (liste en dur) : .formulaR1C1= .formulaR1C1

Le plus perturbant, c'est que application volatile (false) fonctionne bizarrement : le recalcul de la fonction semble aléatoire : de temps en temps lors de modification de cellule ou de lancement de macro, le code d e la fonction s'active. La me^me action faite e fois de suite, ne va pas produire le même effet ????

Bon, je passe le sujet à clôturé.

Bonjour,

Je me permets, car j’ai le même problème avec une fonction qui compte le nombre de cellule coloré.

Si je passe en application.volatile tout fonction Bien sur ma feuil1 sauf quand je lance une autre macro sur la feuil2 qui modifie la valeur de cellules et la c’est le drame. Les délais d’attente est long car à chaque changement ma fonction est appelé même si sur ma feuil2 elle n’est présente dans aucune cellule.

Rechercher des sujets similaires à "prbl application volatile"