XL 2013 Rafraîchissement de la fonction cellule

CHRIS1945

XLDnaute Occasionnel
Bonjour à tous,
J'ai utilisé la fonction CELLULE pour rechercher une partie du nom du classeur qui contient l'année du classeur.
Cela fonctionne très bien
J'ai ensuite généré par vba un classeur pour l'année suivante en modifiant le nom pour y mettre l'année +1
Cela fonctionne aussi très bien
Le soucis est que, si j'ouvre les deux classeurs en même temps et que je passe de l'un à l'autre SANS RIEN FAIRE, excel conserve la valeur CELLULE trouvée dans le dernier fichier ouvert et donc présente dans l'un des classeurs l'année de l'autre.
En fait la fonction CELLULE ne se rafraîchit pas par le seul fait de passer d'un fichier à l'autre. Il faut impérativement déclencher par F9 le calcul pour que la fonction se rafraîchisse ce qui est gênant quand le classeur s'adresse à divers opérateurs non aguerris.
J'ai essayé par vba événement de déclencher le calcul mais les possibilités ne proposent pas le simple fait de choisir un classeur. Il y a le "change" ou "open" ou encore "activate" mais je n'ai pas trouver le simple fait de choisir l'un ou l'autre fichier ouvert.
Connaissez-vous une astuce ???
Merci d'avance de votre aide
Chris
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pour que la valeur s'actualise à chaque recalcul de la feuille ou du classeur vous pouvez faire quelque chose du genre:

CELLULE("nomfichier";A1) & TEXTE(ALEA();"")

Alea() sera recalculer, entraînant le recalcul de CELLULE.
TEXTE() affichera "" à la place du résultat de alea()

Ne pas oublier le deuxième argument (ref) de la fonction cellule, A1 dans l'exemple, afin que cellule retourne l'adresse du bon fichier.

cordialement
 

job75

XLDnaute Barbatruc
Bonjour CHRIS1945, Roblochon,

La fonction CELLULE est volatile, il est donc inutile de lui ajouter la fonction (volatile) ALEA().

Edit : les formules =CELLULE("nomfichier";A1) ou mieux =CELLULE("filename";A1) vont bien.

A+
 
Dernière édition:

CHRIS1945

XLDnaute Occasionnel
Bien merci pour votre réponse mais ma formule contient déjà la fonction STxt qui est équivalente à Txt et cela ne fonctionne pas. Le problème c’est que quand on clique sur les onglets de fichiers pour choisir le fichier que l’on veut voir et que l’on ne fait rien d’autre, le calcul ne se déclenche pas et donc Excel garde en mémoire le dernier calcul effectué. Il faudrait quelque chose comme un vba qui se déclenche sur événement mais je ne vois pas ce genre d’événement...
Je crains que cela n’existe malheureusement pas.
Bien à vous
Chris
 

job75

XLDnaute Barbatruc
Je pense que vous n'essayez pas de comprendre ce qu'on vous dit, le VBA est inutile.

Si l'on modifie le nom des fichiers , les fonctions =CELLULE("filename";A1) se recalculent toutes seules en renvoyant toujours les bons résultats.

Et il n'y a rien "en mémoire".
 

CHRIS1945

XLDnaute Occasionnel
Je pense que nous ne nous comprenons pas.
Je joins 2 classeurs tests sans VBA et où j'ai mis ma formule en B2
Chargez les en mémoire et quand c'est fait passez de l'un à l'autre en cliquant sur l'onglet de l'un et de l'autre et regarder le résultat : vous verrez que l'année en B2 reste la même au deuxième essai et qu'il faut impérativement appuyer sur F9 pour lancer le calcul et mettre à jour B2.
C'est pour cela que je demande votre aide.
Merci d'avance
Chris
 

Pièces jointes

  • Classeur1-2020.xlsx
    7.7 KB · Affichages: 5
  • Classeur1-2021.xlsx
    8.2 KB · Affichages: 4

job75

XLDnaute Barbatruc
Non seulement vous n'essayez pas de comprendre mais vous ne savez pas lire.

J'ai pourtant mis A1 en gras au post #5 :rolleyes:

Vos fichiers en retour avec la formule corrigée en B2.
 

Pièces jointes

  • Classeur1-2020.xlsx
    9.6 KB · Affichages: 3
  • Classeur1-2021.xlsx
    9.6 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2