j'ai besoin de créer un bouton qui me recalculerai la feuille sur laquelle il se trouve.
Dans cette feuille se trouve des fonctions que j'ai créé qui utilisent les données des autres feuilles. Donc lorsque je change des données dans les autres feuilles, j'aimerais pouvoir mettre à jour certains bilans.
j'ai déjà cherché sur les forums où F9 et la fonction calculate sont mentionnées. Mais cela ne fonctionne pas. Mes fonctions ne recalculent pas. Je suis obligée de me mettre dans ma cellule et d'appuyer sur entrée pour que le calcul se fasse. (et de tirer ensuite à l'ensemble de mes formule)
En première ligne du corps des fonctions que vous avez créées mettez: Application.Volatile
Vos fonctions seront recalculée à chaque fois. Sachez que suivant ce qu'elles calculent, cela peut être gourmand en temps et mémoire.
merci beaucoup pour cette réponse, effectivement rien que pour l'enregistrement cela prend du temps ...
Cela permettra de déclencher le calcule avec un bouton dans lequel je mets "calculate" ? Parce que je ne souhaite pas que cela se recalcule à chaque fois ... (justement trop lent)
Je vous demande plutôt que d'essayer parce que j'ai peur de planter mon fichier.
D'après ce que je peux lire, cela déclenche le calcul chaque fois qu'une cellule est modfiée dans la feuille ...
--> ingérable pour moi, l'idéal serait de pouvoir déclencher ce calcul via un bouton.
Dans cette feuille se trouve des fonctions que j'ai créé qui utilisent les données des autres feuilles. Donc lorsque je change des données dans les autres feuilles, j'aimerais pouvoir mettre à jour certains bilans.
Si vous nous donniez directement un exemple de votre fichier nous pourrions peut-être avoir une chance de vous trouver une solution, plutôt que de tergiverser sur du virtuel.
Ok ... on se calme : je ne sais jamais quoi faire : je donne un fichier, on me dit que ne va pas me faire tout le travail, je ne le donne pas, on me le demande...
Zen
J'utilise une fonction dans une feuille que j'ai moi même créé. La valeur ne se met à jour que si je me remets sur la cellule et appuie sur entrer. c'est assez laborieux, j'aimerai pouvoir déclencher le calcule par un bouton.
J'avais utilisé calculate associé à un bouton mais cela ne fonctionne pas.
Fichier exemple ci-joint.
L'indication de Roblonchon en #2 fonctionne bien pourtant..
VB:
Function SommeParticipants(Evenement)
Application.Volatile
SommeParticipants = Application.Sum(Sheets("test").Cells.Find(Evenement, , xlValues).EntireColumn)
End Function
Bonjour,
effectivement maintenant cela fonctionne !
La première fois quand j'ai essayé d'insérer Application.volatile cela a fait planté tout mon fichier ... et comme les fonction sont longues à calculer, j'ai cru que cela n'allait pas être possible mais cela fonctionne maintenant sans soucis ...
Excusez-moi de vous avoir sollicité de nouveau alors que la première possibilité fonctionnait.
Je garde l'exemple avec le tableau mais j'ab=vais du enlever les tableaux de mon fichier car cela ne faisiat pas bon ménage avec les boucles (je fais ça sur plusieurs feuilles donc besoin de boucles.)
je te conseille d'utiliser plutôt la proposition de Roblochon de 16:08.
Beaucoup plus efficace et rapide que ta fonction personnalisée pas franchement nécessaire.
eric
Bonjour,
oui mais c'est un fichier exemple ... celui sur lequel je travaille comporte plusieurs feuilles, j'ai rajouté des conditions dans ma fonction ...
Je ne pouvais pas vous le transmettre tel quel, je vous ai mis une version simplifiée pour qu'on comprenne le principe.
Je me réjouissais mais l'ouverture du fichier est beaucoup trop longue avec application.volatile ...
Il me faudrait vraiment un moyen de déclencher le calcul avec un bouton. (vos propositions le déclenchait automatiquement), pour que ce temps de calcul ne soit pris que lorsqu'on le souhaite et non à chauqe fois qu'on ouvre le fichier : ce n'est pas forcément nécessaire.
Je pense qu'à ce stade je me contenterai de cliquer sur les cellules et d’appuyer sur entrer à chaque fois que j'ai besoin d'une mise à jour mais c'est embêtant pour les autres utilisateurs du fichier...
Bonjour,
En situation réelle, pourquoi avez-vous besoin d'une fonction personnalisée (udf) pour faire une somme. Les outils et fonction excel sont normalement suffisant.
Si toutefois vous avez réellement besoin d' une udf essayez de cerner les plages dans laquelle vous voulez faire la recherche:
VB:
Dim plg As Range
Set plg = Sheets("Test").UsedRange ' Ne concerne que la plage de cellules utilisée sur la feuille
Application.Sum(Intersect(plg.Find(Evenement, , xlValues).EntireColumn, plg))
Comme nous n'avons pas tous les tenants ni les aboutissants il est difficile de vous trouver une solution efficace.
La macro que vous demandez pourrait être sur une cellule:
Code:
Sub Rafraichir()
Sheets("Test").Range("A3").Formula = "=SommeParticipants(""Quiz"")"
End Sub
le problème est qu'effectivement je ne peux pas vous donner tous les tennats et aboutissants ... J'ai déjà intégré usedrange dans ma fonction ...
j'ai en plusieurs sur la feuille (3), je voudrais qu'elles se lancent toutes.
La solution de sub rafraichir me semble donc compliquée.
Je pense que je vais laisser tomber...
J'ai fait une fonction personnalisée et je n'ai pas utilisé les fonctionnalités d'excel car je ne sais pas e faire sans vba : je fais par exmeple la somme des nouveau participants, un participants est considéré comme nouveau s'il n'y a pas de dans les autres colonnes, par catégorie ... J'ai beosin de boucles.
Bref je ne sais pas faire sans VBA. Cela fonctionne comme cela et je ne souhaite pas revenir là dessus.
Je cherche à savoir s'il n'y aurait pas un moyen de déclencher le calcul des fonctions dans une feuille par un bouton. Donc je vous ai mis un exemple de ma situation simplifiée mais trouver une solution sans fonction, ou en modifant profondément la fonction n'est pas mon objectif : cela me force à revoir toute la structure du fichier qui est lourd ...