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é.