Bonjour,
La formule =STXT(CELLULE("filename";A1);TROUVE("]";CELLULE("filename";A1))+1;32) "permet de récupérer le nom de l'onglet dans une cellule
Comment modifier cette formule pour récupérer tous les noms d'onglets sur la même feuille sous la forme d'une liste sans macro?
Merci pour vos réponses
Créer un nom par 'insertion / nom / définir', par exemple nomFeuilles et dans 'Fait référence à' saisir : =LIRE.CLASSEUR(1)
en A1: =INDEX(nomFeuilles;LIGNE())
à tirer vers le bas.
(si tu démarres en ligne 3 remplacer LIGNE() par LIGNE()-2 etc)
Si tu ne veux que le nom de la feuille sans la référence au classeur :
=STXT(INDEX(nomFeuilles;LIGNE());CHERCHE("]";INDEX(nomFeuilles;LIGNE()))+1;30)
Et si tu ne veux pas afficher les #REF! tu peux ajouter un test sur nbval(nomFeuilles) qui te donne le nombre de feuilles du classeur
=SI(LIGNE()>NBVAL(nomFeuilles);"";STXT(INDEX(nomFeuilles;LIGNE());CHERCHE("]";INDEX(nomFeuilles;LIGNE()))+1;30))
A ce moment là tu peux mettre dans la définition de nomFeuilles :
=STXT(ALEA()*0&LIRE.CLASSEUR(1);2;50)
Nécessitera quand même un F9 ou une validation de n'importe quelle cellule pour mettre à jour la liste sur un ajout de feuille (mais dynamique sur renommage ou suppression).
D'autre part la liste est donnée dans l'ordre des onglets, en tenir compte si déplacement de feuille.
eric
Bonsoir,
Votre formule m'interresse beaucoup, est il possible que l'on ai deux listes de nom de feuilles:
par exemple si l'on a deux couleurs d'onglets ou un autre moyen de distinguer deux series d'onglets dans le même classeur?
Pour les couleurs pas par formule, non.
En vba ça pourrait être :
Sub Macro1()
Dim shresult As Worksheet, sh As Worksheet
Set shresult = Worksheets("Feuil1")
For Each sh In Worksheets
Select Case sh.Tab.ColorIndex
Case 4
shresult.[A65536].End(xlUp).Offset(1, 0) = sh.Name
Case 6
shresult.[B65536].End(xlUp).Offset(1, 0) = sh.Name
Case Else
shresult.[C65536].End(xlUp).Offset(1, 0) = sh.Name
End Select
Next sh
End Sub
exemple
Ou bien en se basant sur une partie du nom, par exemple ceux commençant par L_ et T_ ou ceux finissant par 1 et 2 ou ...
1) ça pourrait être :
...
Select Case Left(sh.Name, 2)
Case "L_", "M_"
shresult.[A65536].End(xlUp).Offset(1, 0) = sh.Name
Case "T_"
shresult.[B65536].End(xlUp).Offset(1, 0) = sh.Name
Case Else
shresult.[C65536].End(xlUp).Offset(1, 0) = sh.Name
End Select
...
Attention aux majuscules/minuscules
2) effacer les réponses précédentes par ex :
Range("A2:C10").clearcontents
ou plus perfectionné....
RE,
Je suis novice en macro, mais apparemment, je vois que tu a affecté un code pour les couleurs.
si j'ai bien pigé, la 4 c'est le vert, le 6 c'est le jaune ?
ou puis-je trouver le code des couleurs, dans l'aide d'excel?
Merci beaucoup!
J'ai juste un petit pb, lorsque j'ajoute une nouvelle feuille, il ne me la prend pas en compte. Je ne vois pas pourquoi?
Merci encore et bonne journée
Merci
a+