Bonjour,

Soit un fichier Tester_Fonction.xlsm vierge.

Dans Feuil1, je dispose d’un tableau (LISTOBJECT) nommé SEMAINE
De A1 à A8 - - > Num_Jour ,1, 2, 3, 4, 5, 6, 7
De B1 à B8 - - > Jour, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche
A1 et B1 sont les titres.

J’ai créé une fonction utilisateur qui ramène le nom du jour en fonction du N° de jour passé en paramètre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Public Function Jsem(Jour) As String
    On Error Resume Next
    Jsem = Application.WorksheetFunction.VLookup(Jour, Range("Semaine"), 2, False)
End Function
En G5, je saisis donc : =jsem(5) et c’est bien VENDREDI qui s’affiche.

Si je modifie B6 (qui contient Vendredi) en saisissant Friday par exemple, rien en se passe. G5 reste à Vendredi. F9 et Maj+F9 n’ont aucun effet.

J’ai googleisé mon soucis et j’ai trouvé la solution : Application.volatile.

Je modifie ma fonction en :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Public Function Jsem(Jour) As String
    Application.volatile
    On Error Resume Next
    Jsem = Application.WorksheetFunction.VLookup(Jour, Range("Semaine"), 2, False)
End Function
Le comportement de la fonction est OK. Quand je change une valeur dans mon tableau SEMAINE, le contenu de G5 est bien modifié. Je suis content.

Là où ça pose problème, c’est quand, mon fichier tester_fonction étant ouvert, je crée par exemple un autre tableau (Fichier-Nouveau-Nouveau Classeur) et que j’en modifie une cellule.

Quand je reviens sur TESTER_FONCTION, G5 est vide. Pour ré afficher, je dois faire F9.

Le comportement est identique si j'ouvre un classeur déjà enregistré.

Pouvez-vous m’aider à résoudre ce soucis ?

Merci d'avance.