Page 1 sur 1

[Calc] Fonction d'extraction du nom de feuille

Publié : 10 sept. 2008 07:25
par Jeff
Bonjour,

Ce code va permettre d'extraire le nom d'une feuille en fonction de sa position dans le classeur, en utilisant une formule personnalisée baptisée NOMFEUILLE.

Par exemple, une fois le code installé, =NOMFEUILLE(FEUILLES()) renverra le nom de la dernière feuille :

Version 3 du 17/10/2008 :

Code : Tout sélectionner

REM  *****  BASIC  *****
' Listener
' Un grand merci à Pierre-Yves Samyn du forum officiel OOo
' pour la partie Listener de cette fonction.
Option Explicit

Global PysListener as object

sub PysListenerAdd

PysListener = createUnoListener("Pys_", "com.sun.star.util.XModifyListener")
ThisComponent.AddModifyListener(PysListener)

end sub

sub PysListenerRemove
	ThisComponent.RemoveModifyListener(PysListener)
end sub

sub Pys_disposing(PysListener)
end sub

Sub Pys_Modified(PysListener)
	thiscomponent.calculateAll
End Sub

'Fonction NomFeuille Version3
'Auteurs : Jeff
'Mes remerciements au forum officiel OOo : http://user.services.openoffice.org/fr/forum/index.php
'Mes remerciements au Club des développeurs français : http://www.developpez.net/forums/index.php

Function NomFeuille(Optional position as integer)
	Dim oDoc As Object, oSheets As Object, Feuille As Object, Cellule as Object
	Dim NmbFeuilles As Integer 'Variable qui va stocker le nombre de feuilles
    
    On error goto Erreurs 'Si erreur va à Erreurs
	oDoc = ThisComponent
	oSheets = oDoc.Sheets
	NmbFeuilles = oDoc.Sheets.Count 'stockage nbre de feuille du classeur

         NomFeuille = oDoc.Sheets(position-1).Name'la première feuille est la feuille 0, d'où le -1
         
 
    Erreurs: 'Gestion des erreurs

         if position < 1 then goto nul'si le critère position est inférieur à 1 va à Nul
                  
         if IsMissing(position) then goto nul'si le critère position est oublié alors va à Nul
       	
       	 if position > NmbFeuilles then goto nul 'si le critère position est supérieur à NmbFeuilles alors va à Nul
       	 
         goto fin
        
         nul:'si le critère position est inférieur à 1
         
         NomFeuille = ""'n'affiche rien

         Goto fin
                
    Fin:
        
    End Function
Un petit mode d'emploi (mis à jour le 10/12/2008) :
Tuto_NomFeuille.pdf
Merci à jboulch pour son retour :super:

Re: [Calc] Fonction d'extraction du nom de feuille

Publié : 05 déc. 2008 15:03
par tascon
Bonjour,

je voulais juste apporter une petite contribution

j'ai utilisé cette macro ( nickel au passage !!! )
en lui mettant une condition sur une err de façon à ce qu'elle se réactualise automatiquement ( sans lancer la macro "Listener", désolé -ya de macro mieux ça tourne ...)
Ligne______________colonne A____________________________________ colonne B
1_________=INDIRECT(CONCATENER(B1;".A1"))_________=SI(ESTERR(A1);NOMFEUILLE(LIGNE(A1)))
2_________=INDIRECT(CONCATENER(B2;".A1"))_________=SI(ESTERR(A2);NOMFEUILLE(LIGNE(A2)))
3_________=INDIRECT(CONCATENER(B3;".A1"))_________=SI(ESTERR(A3);NOMFEUILLE(LIGNE(A3)))
4_________=INDIRECT(CONCATENER(B4;".A1"))_________=SI(ESTERR(A4);NOMFEUILLE(LIGNE(A4)))


résultat

__________________Err :522____________________________________Feuille1
__________________Err :522____________________________________Feuille2
__________________Err :522____________________________________Feuille3
__________________Err :502
__________________Err :502

( info : Err :522 --> err cyclique et Err :502 --> ref non trouvée )

ça oblige à prévoir une colonne "technique" mais l'actulisation est immédiate ( recalcul auto ) en cas de modif des onglets ( ajout, sup , renome ... )


voilà , sinon, c'est dommage que cette fonction n'est pas été directement intégrée dans la version de base ...

Re: [Calc] Fonction d'extraction du nom de feuille

Publié : 12 janv. 2011 10:49
par Goffdely
Je voulais dire un grand merci pour cette fonction qui simplifie grandement les formules que j'avais construites pour automatiser des calculs hebdomadaires et qui, en outre, permet une tolérance sur les fautes de frappe dans les noms des nouvelles feuilles.
Bravo.

Re: [Calc] Fonction d'extraction du nom de feuille

Publié : 31 juil. 2012 12:53
par TomBoy5
Bonjour,

Sinon, il y a plus simple... ou plus compliqué selon le point de vue... Il suffit de s'appuyer sur la fonction CELLULE("FILENAME";xx)
Et la formule :

Code : Tout sélectionner

=STXT(CELLULE("FILENAME";A1);CHERCHE("$";CELLULE("FILENAME";A1))+1;NBCAR(CELLULE("FILENAME";A1)))
dans une cellule retourne le nom de la feuille référencée par A1...

Mais l'idée de la macro était pas mal non plus. A vous de choisir la solution la plus adaptée à votre besoin.

Je n'ai pas trop de mérite, ma formule est juste une adaptation pour Calc de ce que j'avais trouvé pour Excel...
cf h**p://www.excel-downloads.com/forum/69346-fon ... ctive.html

Cordialement,

Tom

Re: [Calc] Fonction d'extraction du nom de feuille

Publié : 31 juil. 2012 20:17
par Jeff
Bonjour et bienvenue,
TomBoy5 a écrit : Il suffit de s'appuyer sur la fonction CELLULE("FILENAME";xx)
Heuu non, la fonction que tu cites récupère le nom de la feuille courante, il n'est pas possible avec cette fonction de récupérer le nom d'une autre feuille depuis sa position dans le classeur.

A + :)