Une formule qui ne s'exécute pas automatiquement

E

El Toto

Guest
Bonjour à tous,

J'ai écrit une macro qui me permet de récupérer le nom des feuilles actives d'un classeur. (voir fichier joint)

Cette fonction est utilisée directement en tant que formule dans la feuille n°1. Cependant, lorsque je rajoutte une feuille, celle ci n'apparaît pas tout de suite. On dirait que la fonction n'est pas systématiquement appelée. Il faut que je clique sur la formule, comme si je voulais la modifier pour faire la maj.

Si quelqu'un voit une solution pour que la mise au jour se fasse automatiquement, je le remercie d'avance.

A bientôt.
 

Pièces jointes

  • Test.zip
    6.4 KB · Affichages: 41
  • Test.zip
    6.4 KB · Affichages: 38
  • Test.zip
    6.4 KB · Affichages: 44
E

El Toto

Guest
En effet Ti, je n'avais pas rajoutée cette ligne de code.

Je viens donc de la rajouter.
Ma fonction devient donc:
Public Function NomFeuille(Index As Integer) As String
Application.Volatile
NomFeuille = Worksheets(Index).Name
End Function

Cependant, lors de l'ajout d'une feuille dans le classeur (Menu Insertion > Feuille) il n'y a pas de calcul dans la feuille qui contient l'appel de ma fonction.
Il n'y a donc pas de mise à jour.

Mais, cela fonctionne quand même mieux qu'avant. Il doit y avoir autre chose...
 
C

Chris

Guest
Bonjour
Cela ne mettra à jour la feuille où se trouve la fonction que si tu effectues une manip dans cette feuille.
C'est le principe du calcul : n'est calculée que la feuille active et seulement en cas de recalcul.
Exemple si tu mets l'heure courante dans une cellule : elle ne se met à jour que si tu fais quelque chose dans la feuille.
Si tu veux un affichage indépendant du calcul, il faut non pas une fonction mais une procédure événementielle.
Chris
 
J

jmps

Guest
Bonjour El Toto, Minick, Ti, Chris,

Je ne sais pas si ça peut t'aider mais : Application.Calculate force le recalcul d'une feuille.
Par contre je ne sais pas trop sur quel évènement le placer. Mais si ça peut t'aider.

Bon courage.

José
 
E

El Toto

Guest
En effet,
je viens d'ajouter Application.calculate dans la procédure évènementielle de la feuille 1 : Worksheet_Activate.
Et maintenant dès que je passe dans la feuille 1, la mise à jour est automatique.

Merci à Tous.
 

Discussions similaires

Statistiques des forums

Discussions
314 216
Messages
2 107 389
Membres
109 821
dernier inscrit
tristan28