[Calc] Fonction d'extraction du nom de feuille

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
Jeff
GourOOu
GourOOu
Messages : 9608
Inscription : 18 sept. 2006 11:40
Localisation : France

[Calc] Fonction d'extraction du nom de feuille

Message 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
(297.31 Kio) Téléchargé 3436 fois
Merci à jboulch pour son retour :super:
Dernière modification par Jeff le 10 déc. 2008 09:18, modifié 1 fois.
tascon
Fraîchement OOthentifié
Messages : 1
Inscription : 05 déc. 2008 14:44

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

Message 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 ...
Goffdely
Fraîchement OOthentifié
Messages : 1
Inscription : 12 janv. 2011 11:41

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

Message 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.
OOo-3.2.0 sous windows XP
OOo-3... sous Linux Ubuntu 10.10
TomBoy5
Fraîchement OOthentifié
Messages : 1
Inscription : 31 juil. 2012 14:44

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

Message 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
Dernière modification par Oukcha le 12 sept. 2012 22:37, modifié 1 fois.
Raison : url externe désactivée
Libre Office 3.3.4
Windows 7
Jeff
GourOOu
GourOOu
Messages : 9608
Inscription : 18 sept. 2006 11:40
Localisation : France

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

Message 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 + :)
Répondre