VBA / formule crée / #NOM?

Résolu/Fermé
alex - Modifié par alex le 25/06/2012 à 12:56
 alex - 25 juin 2012 à 18:47
Bonjour,


Je viens de créer une formule simple sur VBA qui consiste à récupérer le nom de mon fichier:


Function NAMEFILE() 
    NAMEFILE = ActiveWorkbook.Name 
End Function



Elle marche lorsque je viens de la créer. Si je change le nom de mon fichier et que je l'ouvre, la formule ne se recalcule pas automatiquement, je dois activer manuellement la cellule qui contient ma formule NAMEFILE() pour que la valeur soit changée.


Si j'enregistre, je change à nouveau le nom du fichier et si je l'ouvre à nouveau, là, j'ai #NOM? qui apparaît comme résultat.


Pourquoi?


Comment modifier mon code pour que la fonction marche tout le temps et pour qu'elle puisse se recalculer automatiquement?


Merci pour votre aide


Alex


5 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
25 juin 2012 à 15:50
Essaye ça

Function NAMEFILE()
Application.volatile
NAMEFILE = ActiveWorkbook.Name
End Function
1
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
25 juin 2012 à 15:56
Essaye ça!

Function NAMEFILE()
Application.Volatile
NAMEFILE = ActiveWorkbook.Name
End Function

en appuyant sur "F9" tu fais un rafraîchissement des calculs
1
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
25 juin 2012 à 17:52
Oui et non!
si une fonction est crée et qu'elle est utilisée dans un module ou un appel par vba
alors pas de problème.

mais si la fonction est utilisée sur une feuille alors oui il faut cette instruction pour que l'instruction soit recalculée.
A+
1
Super!

ça marche!
Merci beaucoup.

Mais pourquoi Excel ne recalcule pas automatiquement les fonctions créées? On doit mettre "Application.Volatile" pour chaque fonction créée?

Alex
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OK merci!
0