Comment nommer une Feuille en fonction du contenu d'une cellule

Bonjour. Je souhaiterais faire en sorte que le nom des feuilles d’un fichier soit automatiquement attribué en fonction du contenu d’une cellule. Il s’agirait toujours de la même cellule dans chacune des feuilles - par exemple la cellule “A2” de chaque feuille (car cette cellule “A2” contiendra toujours la même formule" “= telle cellule de la page 1”. Cette cellule “A2” ne comporterait qu’un chiffre ou nombre de 1 à 100. Dans l’idéal, en cas de chiffre identique, il faudrait que le nom de la feuille attribue automatiquement un “.1” puis “.2”, “.3” etc… Par exemple “12.1”, “12.2”, 12.3" si j’ai trois feuilles avec leur cellule “A2” ayant le nombre 12.
J’ai trouvé une macro qui s’applique à Excel mais que je n’ai pas su adapter à Libre Office.
Y-aurait-il une formule permettant de nommer une feuille en fonction d’une cellule ou alors une macro ?
En vous remerciant pour votre aide.

PRECISIONS:
La première feuille du fichier est une feuille qui permet de tenir à jour un listing qui évolue régulièrement. Admettons que cette liste gère des box avec leur contenu. Si j’ai 12 box en feuille 1, je génère 12 feuilles à la suite avec le contenu de chaque box. Je peux alors imprimer le contenu du box 8 en imprimant la 9e feuille qui porterait le nom « box 8 ».
La difficulté est que parfois j’ai par exemple le box 1 qui comporte des contenus appartenant à des personnes différentes. Ils sont nommés box 1 et box 1.1.
La deuxième feuille portera le nom box 1 mais il faudrait que la troisième se nomme automatiquement box 1.1 et pas box 2 qui est un autre box.
Les noms des box se trouvent dans une cellule de leur page respective, ils sont récupérés automatiquement depuis la feuille 1.
Il faudrait donc que cette cellule contenant le numéro du box renomme automatiquement la feuille avec le même nom.
J’espère avoir été plus clair.
En ce qui concerne le lien sur la macro en anglais, j’y ai bien accédé mais j’avoue ne pas comprendre comment l’utiliser. Dans tous les cas merci pour votre réponse. Amicalement.

arrivés comment ? :thinking:

comment ?

uploader un .ods d’exemple devrait clarifier un peu plus :wink:

Bonjour.
Voici un modèle très simplifié du type de tableau dans lequel je souhaiterais renommer automatiquement les noms de feuilles pour les faire correspondre aux numéros de box concernés.
En vous remerciant pour votre aide.
Amicalement.

TEST BOX.ods (16.7 KB)

ok bon, on peut pas dire que ça soit encore très clair :confused:

mais pour répondre au titre initial : voila une macro qui parcourt A7:A10 de la première feuille de votre exemple et qui renomme les feuilles suivantes …

Sub renommerFeuilles()

    lesFeuilles = ThisComponent.Sheets
    tableau = lesFeuilles.getByIndex(0).getCellRangeByName("A7:A10").getDataArray()
    f = 1 ' premiere à renommer
    
	for each row in tableau
		for each s in row
			lesFeuilles.getByIndex(f).name = "test Box " & s
			f = f+1
		next
	next
End sub

imageimage

Bonjour et sincèrement un grand merci pour votre réponse. Désolé de ne pas être assez clair. Je garde précieusement votre macro car elle me sera utile par ailleurs, notamment la recherche de plage qui va me servir.
En fait, au lieu de renommer les feuilles “test box 1” etc, je cherche à ce qu’elles reprennent le contenu des cellules “A7”, puis pour la feuille suivante, “A8”, puis pour la feuille suivante, “A9”, de la première page “TABLEAU”. Là ce serait parfait. Ainsi, dans mon fichier exemple, les trois feuilles se nommerait “1” (= A7 TABLEAU), “1.1” (= A8 TABLEAU) et “2” (= A9 TABLEAU) etc. Je cherche à récupérer directement le contenu de ces cellules pour nommer les feuilles.
Vraiment merci pour votre aide.
Amicalement.

J’ai corrigé ici une erreur dans mon post précédent avant de m’apercevoir que je pouvais effectuer cette correction directement dans le post concerné - et je ne sais pas supprimer un post…

la modification n’est pas trop complexe, j’espère :wink:

			lesFeuilles.getByIndex(f).name = s

Re-bonjour.
Vraiment désolé mais nous n’y sommes toujours pas. Je ne cherche pas à numéroter mes onglets de façon linéaire et logique mais en fonction du contenu d’une cellule. En espérant ne pas abuser, j’essaie de m’expliquer autrement:
sur mon fichier test, la cellule A7 de “TABLEAU” porte le N° 1. Mon but est que l’onglet “BOX 1” soit renommé “1”, comme la cellule A7 de “TABLEAU”. De même suite, il faudrait que l’onglet suivant “BOX…” soit nommé comme la cellule “A8” soit “1.1” et ainsi de suite, l’onglet “BOX…” renommé comme la cellule A9 de "TABLEAU, soit “2”, etc…
Si la numérotation des box dans la colonne “A” se faisait de manière linéaire, je n’aurais aucun problème: je créerais des onglets 1,2,3,4,5,6…
Le problème est que la numérotation n’est pas linéaire, je peux avoir 1 puis 2 puis 3, puis 3.1 puis 4 puis 4.1 suivi de 4.2. Il me faut donc parvenir à numéroter les onglets en fonction de ce qui est inscrit dans la colonne A. Je souhaite que mes onglets reprennent comme intitulé, le contenu d’une cellule précise.
Encore merci pour votre aide et pour vos réponses précédentes.

c’est bien ce que fait Comment nommer une Feuille en fonction du contenu d'une cellule - #9 by fpy

Bonjour. Désolé mais ça ne fonctionne toujours car lorsque je lance cette macro ci-dessous, avec notamment “lesFeuilles.getByIndex(f).name = s”.
Les feuilles ne sont pas renommées en reprenant le contenu d’une cellule mais elles sont simplement numérotées crescendo de 1 en 1 (2 puis 3 puis 4 puis 5 etc jusqu’à épuisement de la plage spécifiée).

Sub renommerFeuilles()

lesFeuilles = ThisComponent.Sheets
tableau = lesFeuilles.getByIndex(0).getCellRangeByName("A7:A20").getDataArray()
f = 1 ' premiere à renommer

for each row in tableau
	for each s in row
		lesFeuilles.getByIndex(f).name = s
		f = f+1
	next
next

End sub

Je n’arrive toujours pas à nommer mes feuilles en reprenant le contenu de telle ou telle cellule.
N’hésitez pas à me dire si ce que je souhaite est impossible.
Cordialement.

il faut revoir les tests :confused:
Faux négatif — Wikipédia
(attention notamment aux feuilles cachées comme dans votre TEXT BOX.ods)

ask 120230.ods (14.7 KB)

https://forum.openoffice.org/fr/forum/viewtopic.php?f=15&t=11870

Bonjour et merci. La macro “ask 120230” correspond parfaitement à ce que je recherche, renommer des feuilles en fonction du contenu d’une cellule. Je vais tenter d’appliquer cette macro à mon projet.
Merci sincèrement pour votre contribution.

basé sur quel événement ?

pour le principe, ça devrait être assez similaire à Run Macro when User click to view Sheet - #2 by fpy

PRECISIONS:
La première feuille du fichier est une feuille qui permet de tenir à jour un listing qui évolue régulièrement. Admettons que cette liste gère des box avec leur contenu. Si j’ai 12 box en feuille 1, je génère 12 feuilles à la suite avec le contenu de chaque box. Je peux alors imprimer le contenu du box 8 en imprimant la 9e feuille qui porterait le nom « box 8 ».
La difficulté est que parfois j’ai par exemple le box 1 qui comporte des contenus appartenant à des personnes différentes. Ils sont nommés box 1 et box 1.1.
La deuxième feuille portera le nom box 1 mais il faudrait que la troisième se nomme automatiquement box 1.1 et pas box 2 qui est un autre box.
Les noms des box se trouvent dans une cellule de leur page respective, ils sont récupérés automatiquement depuis la feuille 1.
Il faudrait donc que cette cellule contenant le numéro du box renomme automatiquement la feuille avec le même nom.
J’espère avoir été plus clair.
En ce qui concerne le lien sur la macro en anglais, j’y ai bien accédé mais j’avoue ne pas comprendre comment l’utiliser. Dans tous les cas merci pour votre réponse. Amicalement.