Renvoi du nom des feuilles pour sommaire

mvcs

XLDnaute Nouveau
Bonjour,
Je cherche une formule pour récupérer le nom des feuilles dans la première pour faire comme un espèce de sommaire.
Exemple :

A1 : Sommaire
A2 : Feuil2 <- c'est là que j'aimerais une formule que je ferais glisser vers le bas
A3 : Feuil3
A4 : Feuill4
etc.

De cette façon, si l'ordre des feuilles change ou si on en supprime, le sommaire s'actualise.
Je sais qu'il existe une formule qui s'appelle : =NOMFEUILLE(Index;Format;Type feuille)
mais il faut pour cela télécharger Morefunc 5.06. C'est une macro contenant 67 nouvelles fonctions pour Excel (pour les intéressés c'est à Ce lien n'existe plus)
C'est sûrement très bien mais je dois ensuite diffuser mon fichier sur plusieurs postes et je ne tiens pas à être obliger d'installer ce module complémentaire sur tous les postes.

Donc comment faire avec les fonctions basiques d'excel.
Je connais la formule qui renvoie le nom de la feuille où on se trouve
=STXT(CELLULE("nomfichier";A1);TROUVE("]";CELLULE("nomfichier";A1))+1;32)
mais pour les autres ???

Merci
 

Staple1600

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonsoir mvcs, le fil, le forum

Replongeons dans les macros XL4 ;

Voir ce message que j'écrivais en juin 2008
https://www.excel-downloads.com/threads/acces-a-une-feuille-par-son-numero.98697/
(Ne pas oublier de parcourir tout le fil qui fut fort instructif ma foi et où se croisa du beau linge XLDIEN)

EDITION
: Ton fil m'a permis de retrouver cet autre fil ou j'avouais encore utiliser des macros XL4.
Merci mcvs ;)

Nous étions en juillet 2008, voici ce qu'écrivait Job75 (salutations au passage ;) )
https://www.excel-downloads.com/threads/macros-excel-4-0.100236/

Je te conseille de jeter un œil gourmand sur Lien supprimé également.



 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonjour à tous
Si l'utilisation d'une procédure VBA est possible, en voici une qui, placée dans le module de la première feuille, devrait faire l'affaire :
Code:
Private Sub Worksheet_Activate()
Dim n&, sh, oDat()
  For Each sh In ThisWorkbook.Sheets
    If sh.Name <> Me.Name Then
      n = n + 1
      ReDim Preserve oDat(1 To 1, 1 To n)
      oDat(1, n) = sh.Name
    End If
  Next sh
  With [A2]
    Range(.Cells, Cells(Rows.Count, .Column).End(xlUp)).ClearContents
    .Resize(UBound(oDat, 2), 1).Value = WorksheetFunction.Transpose(oDat)
  End With
End Sub
ROGER2327
#5234


Dimanche 1er Merdre 138 (Accouchement de Sainte Jeanne, papesse, ST)
29 Floréal An CCXIX
2011-W20-3T01:12:34Z
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Renvoi du nom des feuilles pour sommaire

Bonjour,

-Créer un nom de champ NomsFeuilles
=STXT(LIRE.CLASSEUR(1);TROUVE("]";LIRE.CLASSEUR(1))+1;99)&INDIRECT("iv65000")

En A2:

=SI(LIGNES($1:1)<=NBVAL(NomsFeuilles);INDEX(NomsFe uilles;LIGNES($1:1));"")




JB
 

Gael

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonjour Mvcs, et salut Boisgontier, Roger, Staple,

Une autre possibilité simple et pratique que j'utilise souvent est de pouvoir afficher la liste des feuilles et d'en sélectionner une par un simple clic droit sur n'importe quelle feuille.

Code très simple à mettre dans "ThisWorkbook":

Code:
Private Sub Workbook_SheetBeforeRightClick(ByVal sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel = True
Application.CommandBars("Workbook tabs").ShowPopup  'liste des feuilles disponibles
End Sub

NB: Les feuilles masquées n'apparaissent pas

@+

Gael
 

mvcs

XLDnaute Nouveau
Re : Renvoi du nom des feuilles pour sommaire

Bonjour Gael,
Ca me plait super bien ton petit code. Bon astuce. Merci bien.
Je voudrais la personnaliser pour garder le bénéfice du menu contextuel avec le clic droit.
Donc, ce qu'il me faudrait, c'est le code (qui doit être aussi super simple) pour que cette liste des feuilles disponibles n’apparaisse sur un clic droit que dans une cellule prédéterminée.
Merci d'avance.
 

Gael

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonjour Mvcs, bonjour à tous,

Tu peux modifier le code en ajoutant une condition. Par exemple pour utiliser la cellule D2:

Code:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("D2")) Is Nothing Then
    Application.CommandBars("Workbook tabs").ShowPopup  'liste des feuilles disponibles
    End If
End Sub

Et si tu veux que cette option ne soit que sur une feuille, il faut mettre le code dans la feuille et pas dans workbook en mettant:

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("D2")) Is Nothing Then
    Application.CommandBars("Workbook tabs").ShowPopup  'liste des feuilles disponibles
    End If
End Sub

Un petit inconvénient, une fois la feuille sélectionnée, le menu contextuel classique apparaît et je ne sais pas comment l'éviter. Si quelqu'un a une idée?

@+

Gael

PS: Une solution est d'utiliser le doubleclic aulieu du clic droit en mettant:

Code:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Et pour éviter l'affichage du menu contextuel normal, il faut simplement ajouter "Cancel=true", je l'avais pourtant dans mon appli mais maintenant je sais à quoi il servait
icon10.png


Ce qui donne:

Code:
Private Sub Workbook_SheetBeforerightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("D2")) Is Nothing Then
    Cancel = True
    Application.CommandBars("Workbook tabs").ShowPopup  'liste des feuilles disponibles
    End If
End Sub

Gael
 
Dernière édition:

mvcs

XLDnaute Nouveau
Re : Renvoi du nom des feuilles pour sommaire

Merci Gael pour ton aide,
A mon tour de t'aider.
Pour éviter l'apparition du menu contextuel, tu mets Cancel=True au début

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel=True
If Not Intersect(Target, Range("D2")) Is Nothing Then
Application.CommandBars("Workbook tabs").ShowPopup 'liste des feuilles disponibles
End If
End Sub

Bye

PS : je suis nouveau sur ce forum et j'en suis pour l’instant très satisfait mais je ne connais pas encore bien la façon de l'utiliser.
Par exemple, comment fais-tu pour faire apparaître dans ton message une fenêtre avec les codes ?
 

Gael

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Re,

En fait j'avais déjà trouvé et modifié en ce sens mon message précédent.

Pour mettre une fenêtre, tu vas en mode avançé et tu cliques sur le # au dessus de la fenêtre de saisie cela t'affichera
Code:
et tu mets ton code entre les deux balises.

Si tu es en réponse rapide, tu peux mettre manuellement
Code:
cela marchera aussi bien.

@+

Gael
 

Dugenou

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonjour mvcs et les brillants forumistes,

je suis nul en VB mais en forum un peu moins: dans le mode avancé tu peux utiliser les balises # ou <> mais le top semble t il c'est la balise highlight=VBA vantée par JCGL
VB:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Cancel=True
    If Not Intersect(Target, Range("D2")) Is Nothing Then
    Application.CommandBars("Workbook tabs").ShowPopup  'liste des feuilles disponibles
    End If
End Sub

Cordialement
 

Gael

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Salut Dugenou,

Merci pour cette précision, c'est vrai qu'elle est super cette balise. Bon je fais un essai ci-dessous:

VB:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Cancel=True
If Not Intersect(Target, Range("D2")) Is Nothing Then
Application.CommandBars("Workbook tabs").ShowPopup 'liste des feuilles disponibles
End If
End Sub

J'aurais encore appris quelque chose dans l'utilisation du forum.

@+

Gael
 

mvcs

XLDnaute Nouveau
Re : Renvoi du nom des feuilles pour sommaire

Une petite question supplémentaire
J'ai bien trouvé les balises # et <>, il y a aussi une
PHP:
 et une [QUOTE] (Kesako ?!) mais j'ai pas la balise highlight=VBA dont parle Dugenou.
Un peu novice le gars mais je vais m'améliorer à votre contact :confused:
 

Staple1600

XLDnaute Barbatruc
Re : Renvoi du nom des feuilles pour sommaire

Bonjour à tous

mvcs
Regardes ma signature
Il faut la saisir à la mimine

PS: tu peux également utiliser la macro de mromain

Une petite question supplémentaire
J'ai bien trouvé les balises # et <>, il y a aussi une
PHP:
 et une [NOPARSE][QUOTE][/NOPARSE]  (Kesako ?!) mais j'ai pas la balise highlight=VBA dont parle Dugenou.
Un peu novice le gars mais je vais m'améliorer à votre contact :confused:[/QUOTE]

  s'affiche ainsi sans l'usage de la balise [NOPARSE][QUOTE][/NOPARSE]  (voir ci-dessous)

Une petite question supplémentaire
J'ai bien  trouvé les balises # et <>, il y a aussi une [PHP] et   une [QUOTE]  (Kesako ?!) mais j'ai pas la balise highlight=VBA dont   parle Dugenou.
Un peu novice le gars mais je vais m'améliorer à votre contact[I][COLOR=gray]

[/COLOR][/I]• Donc en cliquant sur :[ATTACH]817896.vB[/ATTACH], il se passera ceci, et tu auras l'affichage "Citation"
[NOPARSE][QUOTE][/NOPARSE]Une petite question supplémentaire
J'ai bien  trouvé les balises # et <>, il y a aussi une [PHP] et une [QUOTE]  (Kesako ?!) mais j'ai pas la balise highlight=VBA dont parle Dugenou.
Un peu novice le gars mais je vais m'améliorer à votre contact [NOPARSE][/QUOTE][/NOPARSE]



[I][COLOR=gray]

[/COLOR][/I]
 

Pièces jointes

  • quote.png
    quote.png
    501 bytes · Affichages: 264
  • quote.png
    quote.png
    501 bytes · Affichages: 263
  • quote.png
    quote.png
    501 bytes · Affichages: 237
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 088
Membres
103 461
dernier inscrit
dams94