Calc - Comment obtenir la liste de tous les noms des onglets d'un classeur ?

Bonjour,

Dans un fichier Calc, j'ai plusieurs feuilles de calcul et j'ai renommé chaque feuille de calcul ce qui fait que le nom interne (Sheet1, Sheet2, ... ou Feuille1, Feuille2, ...) ne correspond plus au nom qui apparaît dans chaque onglet des feuilles de calcul.
Dans une des feuilles de calcul de ce classeur, j'aimerais, en utilisant des formules et pas des macros, récupérer le nom de chaque onglet de toutes les feuilles de calcul du classeur.

Je sais comment récupérer le nombre de feuille (fonction sheets()).
Sur une feuille de calcul, je sais récupérer le nom interne de la feuille (fonction sheet()).
Sur une feuille de calcul, je sais récupérer le nom de la feuille (le nom inscrit dans l'onglet) (=MID(CELL("filename";A1);FIND("$";CELL("filename";A1))+1;256)&T(RAND())).
Mais je n'arrive pas à obtenir sur une même feuille de calcul le nom de tous les onglets du classeur.
Le but étant aussi que cela se mette à jour quand je supprime ou rajoute une feuille de calcul ainsi que quand je modifie le nom d'une des feuilles.

Une autre façon de faire serait de récupérer la correspondance entre le nom interne et le nom inscrit dans l'onglet de chaque feuille de calcul... mais je n'ai rien trouvé la-dessus.

Si c'est faisable, est-ce que l'un de vous sait comment faire et pourrait m'expliquer ?

Pour information, voici la version de LibreOffice que j'utilise (que je vais passer en 7.1.8 rapidement).
Version: 7.1.7.2 (x64) / LibreOffice Community
Build ID: c6a4e3954236145e2acb0b65f68614365aeee33f
CPU threads: 8; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: en-US (fr_FR); UI: en-US
Calc: threaded

Merci d'avance.
Portez-vous bien.
Cordialement.
Hervé

Bonsoir

As-tu essayé xray ? L'interface est assez rudimentaire, mais on trouve souvent son bonheur dans les objets et leur méthode ?
https://forum.openoffice.org/fr/forum/viewtopic.php?t=3234

Et pourtant, c'est tellement simple avec une macro !!

On peur créer une macro qui s'utilise comme une formule, il me semble ?

Bonne journée,

Salut Hervé
le truc c'est que onglet est un peu impropre, tu veux les noms de toutes les feuilles d'un classeur dans une des feuilles du classeur.
De base, oui, comme le dit Jean Michel tu pourrais utiliser une macro, d'autant qu'il t'indique qu'elle serait simple, et quand j'ai vu l'objet de ton message, je l'ai associé à une réponse via macro...
Je suis la première à dire que l'usage d'une macro est à éviter quand on peut faire autrement. Particulièrement quand tu ne fais pas des choses que pour toi, notamment car les compétences peuvent être plus difficiles à acquérir pour la personne qui reprend le fichier. Mais mon intuition est que dans ton cas, il existe déjà des choses trés simples pour y répondre via une macro, et que la mise en place d'une formule peut être plus complexe....
Sauf que tu as déjà la formule qui répond à ta question.
Donc, je passe mon interface en anglais, je teste ta formule
je crée une nouvelle feuille, et dans ta formule, je remplace A1 par la référence d'une cellule de la nouvelle feuille. J'obtiens le nom de l'autre feuille...
Et c'est tout.
Donc sans macro, tu dois manuellement, saisir une formule, pour chacune des feuilles, rajouter une nouvelle cellule avec cette
formule si tu crées une nouvelle feuille.
Ensuite, si tu renommes une feuille, tu auras bien son nom qui sera automatiquement mis à jour par ta formule.
Si tu veux que la liste se mette à jour d'elle même en ajoutant ou supprimant une feuille, sans compléter toi-même ta liste, tu ne pourras pas faire l'économie d'une macro, elle sert à ça.
D'ailleurs, je pense (mais Jean Michel s'y connait mieux en macro que moi je crois) que tu ne pourras pas faire l'économie d'un déclencheur (quand est-ce que la macro s'exécute pour vérifier qu'il y a un changement ?)
Après si c'est juste pour avoir une vision synthétique de toutes tes feuilles (sans faire référence aux noms), sers toi du navigateur...
Au passage, pense à passer au mlnimum en 7.1.8 (cf alerte de sécurité de Jean Baptiste Faure de lundi 6)
Bon courage !
Claire

Herve ROUSSEL wrote:
Bonjour,
Dans un fichier Calc, j'ai plusieurs feuilles de calcul et j'ai renommé chaque feuille de calcul ce qui fait que le nom interne (Sheet1, Sheet2, ... ou Feuille1, Feuille2, ...) ne correspond plus au nom qui apparaît dans chaque onglet des feuilles de calcul.
Dans une des feuilles de calcul de ce classeur, j'aimerais, en utilisant des formules et pas des macros, récupérer le nom de chaque onglet de toutes les feuilles de calcul du classeur.
Je sais comment récupérer le nombre de feuille (fonction sheets()).
Sur une feuille de calcul, je sais récupérer le nom interne de la feuille (fonction sheet()).
Sur une feuille de calcul, je sais récupérer le nom de la feuille (le nom inscrit dans l'onglet) (=MID(CELL("filename";A1);FIND("$";CELL("filename";A1))+1;256)&T(RAND())).
Mais je n'arrive pas à obtenir sur une même feuille de calcul le nom de tous les onglets du classeur.
Le but étant aussi que cela se mette à jour quand je supprime ou rajoute une feuille de calcul ainsi que quand je modifie le nom d'une des feuilles.
Une autre façon de faire serait de récupérer la correspondance entre le nom interne et le nom inscrit dans l'onglet de chaque feuille de calcul... mais je n'ai rien trouvé la-dessus.
Si c'est faisable, est-ce que l'un de vous sait comment faire et pourrait m'expliquer ?
Pour information, voici la version de LibreOffice que j'utilise (que je vais passer en 7.1.8 rapidement).
Version: 7.1.7.2 (x64) / LibreOffice Community
Build ID: c6a4e3954236145e2acb0b65f68614365aeee33f
CPU threads: 8; OS: Windows 10.0 Build 19044; UI render: Skia/Raster; VCL: win
Locale: en-US (fr_FR); UI: en-US
Calc: threaded
Merci d'avance.
Portez-vous bien.
Cordialement.
Hervé

Bonsoir,
oui, sans macros, je vois pas comment car il n'existe pas de indirect avec
un déplacement relatif par rapport à une feuille (serait peut-être
intéressant d'avoir cela en + des déplacements relatifs de lignes/colonnes
:wink: ).
sinon voici un exemple de fonction "lafeuille" qui te retourne le nom de
feuille associé à sa position (mais via macro très simple).

https://cjoint.com/c/KLjvKGoaaC8

a noter que si l'on change un nom de feuille, il est nécessaire de faire un
Ctrl-Shift-F9 car les functions ne se recalcule pas sinon....

Yves

correction pour ne pas avoir d'erreur au chargement du document :
Function lafeuille(numero)
On Error Resume Next
if numero <= thiscomponent.sheets.getcount() then
lafeuille = thiscomponent.sheets(numero).Name
else
lafeuille = ""
endif
End Function

(rajouter le On Error resume next)
ok c'est à l'arrache :wink:
quand le document est chargé, Ctrl-Shift-F9 permet de recalculer.

J'ai fait au plus rapide :wink:
Yves

Bonjour à tous,

Merci Claire, Jean-Michel et Yves de vos retours.

Comme Claire, je suis réticent aux macro, en partie car je n'ai pas encore pris le temps de regarder comment faire et aussi pour ne pas "effrayer" les personnes à qui je vais distribuer le fichier.

Dans un premier temps, je retiens l'idée du navigateur (que je n'utilise pas assez) et de faire manuellement une liste des noms des onglets à maintenir à jour manuellement.
Dans un deuxième je vais profiter de ce fichier pour m'essayer aux macros...

Merci encore.
Bon week-end à tous.
Cordialement.
Hervé