[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.

[Calc] Fonction d'extraction du nom de feuille

Messagepar Jeff » 10 Sep 2008 08:25

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   AgrandirRéduire
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 & Larrassac
'Nos remerciements au forum officiel OOo : http://user.services.openoffice.org/fr/forum/index.php
'Nos 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é 2517 fois


Merci à jboulch pour son retour :super:
Dernière édition par Jeff le 10 Déc 2008 09:18, édité 1 fois.
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.6 sur Debian Stable 9.9 (stretch) et sur Win 10 pro x64
Avatar de l’utilisateur
Jeff
GourOOu
GourOOu
 
Message(s) : 8038
Inscrit le : 18 Sep 2006 10:40
Localisation : France

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

Messagepar tascon » 05 Déc 2008 16:03

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 ...
tascon
Fraîchement OOthentifié
 
Message(s) : 1
Inscrit le : 05 Déc 2008 14:44

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

Messagepar Goffdely » 12 Jan 2011 11:49

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
Goffdely
Fraîchement OOthentifié
 
Message(s) : 1
Inscrit le : 12 Jan 2011 11:41

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

Messagepar TomBoy5 » 31 Juil 2012 13:53

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   AgrandirRéduire
=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-fonction-nom-de-la-feuille-courante-active.html

Cordialement,

Tom
Dernière édition par Oukcha le 12 Sep 2012 21:37, édité 1 fois.
Raison: url externe désactivée
Libre Office 3.3.4
Windows 7
TomBoy5
Fraîchement OOthentifié
 
Message(s) : 1
Inscrit le : 31 Juil 2012 13:44

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

Messagepar Jeff » 31 Juil 2012 21:17

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 + :)
À lire avant tout !

Pour télécharger Apache OpenOffice

AOO 4.1.6 sur Debian Stable 9.9 (stretch) et sur Win 10 pro x64
Avatar de l’utilisateur
Jeff
GourOOu
GourOOu
 
Message(s) : 8038
Inscrit le : 18 Sep 2006 10:40
Localisation : France


Retour vers Suprême de code

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)