Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Rafraîchir la liste des onglets du classeur (LIRE.CLASSEUR(1))

dionys0s

XLDnaute Impliqué
Bonjour le forum

J'utilise la fonction LIRE.CLASSEUR(1) dans mon gestionnaire de noms pour obtenir la liste des onglets du classeur dans un tableau structuré. Mon problème est que lorsque que j'ajoute, supprime ou renomme un onglet, les noms affichés dans mon tableau ne changent pas. Je suis obligé de rentrer dans les formules (F2) et les valider pour voir les modifications effectuées.

Quelqu'un saurait-il par bonheur comment rafraîchir cette formule automatiquement ?

D'avance merci pour votre aide
 

Pièces jointes

  • XLD - LIRE.CLASSEUR(1).xlsm
    23.4 KB · Affichages: 22

Dranreb

XLDnaute Barbatruc
Bonjour.
Moi je supprimerais les formules et mettrais ce code dans Feuil1 (LISTE) :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   Dim TNF(), L As Long
   ReDim TNF(1 To ThisWorkbook.Worksheets.Count, 1 To 1)
   For L = 1 To UBound(TNF): TNF(L, 1) = ThisWorkbook.Worksheets(L).Name: Next L
   With Me.ListObjects(1)
      If L <= .ListRows.Count Then .ListRows(L).Range.Resize(.ListRows.Count - L + 1).Delete xlShiftUp
      .DataBodyRange.Resize(UBound(TNF, 1)).Value = TNF
      End With
   End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour DionysOs, Bernard, bonjour le forum,

Autre méthode. J'ai créé un nom, LIST_ONG, dans le gestionnaire de noms avec la formule dynamique : =DECALER(LISTE!L3C1;;;NBVAL(LISTE!C1)-2).
 

dionys0s

XLDnaute Impliqué
Bonjour Bernard, bonjour Robert.

Bernard, merci pour votre solution, même si je souhaitais éviter de passer par du VBA.

Robert, je n'ai pas observé de rafraîchissement des valeurs lors de modifications avec votre suggestion.
 

job75

XLDnaute Barbatruc
Bonjour dionys0s, Bernard, Robert,

Comme toutes les fonctions macros Excel 4.0 LIRE.CLASSEUR(1) ne se recalcule pas automatiquement.

Mais on peut la rendre volatile et la recalculer par la touche F9 en remplaçant LIRE.CLASSEUR(1) par LIRE.CLASSEUR(1)&T(ALEA())

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…