Possibilité de visualiser la liste des noms d'onglets?

Bonjour,

J'utilise Excel 16,33 FR sur OSX.

Soit un dossier comportant un grand nombre d'onglets.

Existe-t-il une commande permettant d'afficher à l'écran la liste de tous les onglets et permettant d'en sélectionner un pour affichage?

J'ai parcouru le forum. J'ai trouvé des commandes ou des fonctions développées tailormade pour répondre à des besoins d'utilisation des noms d'onglets. Ou bien des solutions qui fassent le job après les avoir intégrées dans le dossier.

Ma question concerne juste l'affichage instantané du nom des onglets pour en atteindre un qui n'est pas visible à l'écran.

Merci d'avance de vos lumières

PhBr

Bonjour,

Voici une solution que je trouve intéressante (elle n'est pas complètement de moi).

Autre solution : faire un onglet "sommaire" que l'on peut atteindre moyennant une macro et un raccourci clavier.

Bonsoir PhBr , le forum,

Voici un exemple....

Sur la feuille "Sommaire", on crée des liens hypertextes qui correspondent aux onglets....

En cas d'ajout/suppression d'onglet, à l'activation du sommaire, les liens se mettent à jour.

Mais je vois que tu es sous mac....sous réserve de compatibilité....

Cordialement,

Bonjour

Un clic droit sur la petite flêche tout en bas et tout à gauche de la feuille active affiche tous les onglets.

Le clic sur le nom affiche l'onglet

liste onglets

Cordialement

Salut PhBr,

une possibilité VBA :

  • tu choisis une cellule dans chaque feuille que tu sais pouvoir utiliser à cet usage car elle ne comporte aucune donnée ;
  • tu double-cliques sur cette cellule ce qui te crée une validation de donnée reprenant l'ensemble des noms de feuilles de ton classeur ;
  • choisis et cette feuille est activée avec effacement de la liste de validation.

Codes à coller dans le module VBA de 'ThisWorkbook'

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'
Dim sItem$
'
Cancel = True
Application.EnableEvents = False
'
With Sh
    If Not Intersect(Target, .Range("A1")) Is Nothing Then
        Target.Validation.Delete
        For x = 1 To Sheets.Count
            .Range("AAA" & x).Value = Sheets(x).Name
        Next
    End If
    sItem = Sh.Name
    Target.Validation.Add Type:=xlValidateList, Formula1:="=" & sItem & "!AAA1:AAA" & x
End With
'
Application.EnableEvents = True
'
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim sItem$
'
Application.EnableEvents = False
'
With Sh
    If Not Intersect(Target, .Range("A1")) Is Nothing Then
        sItem = Target
        Target = ""
        Target.Validation.Delete
        .Range("AAA:AAA").Value = ""
        Worksheets(sItem).Activate
    End If
End With
'
Application.EnableEvents = True
'
End Sub

A+

@curulis57 : j'aime beaucoup ta solution (car je n'y aurais jamais pensé !)

Mais pourquoi

If Not Intersect(Target, .Range("A1")) Is Nothing Then

Cela bloque toute la procédure et met une erreur sur Target.Validation.Add

Une fois cette ligne enlevée c'est ok !


@ Amadéus ... j'en apprendrai tous les jours !

Salut Steelson,

Ah ? Quel genre d'erreur ?

Je viens de (ré)essayer et je me suis baladé de feuille en feuille sans souci...

Corrigé un truc, quand même :

        If sItem <> "" Then Worksheets(sItem).Activate

@Amadéus : la solution parfaite : c'est beau, la connaissance !

A+

Bonjour

Merci à tous pour la richesse et la vitesse de vos réponses.

Parmi toutes les solutions proposées, celle d'Amadeus (clic-droit) est right in the target.

Sujet marqué comme résolu.

Que votre journée soit belle.

PhBr

Salut Steelson,

Ah ? Quel genre d'erreur ?

si tu double-cliques autre part que sur A1 cela ne fonctionne pas, or c'est ce que tu préconises ...

- tu choisis une cellule dans chaque feuille que tu sais pouvoir utiliser à cet usage car elle ne comporte aucune donnée

Salut Steelson,

je vois ce que tu veux dire : liberté totale de créer cette liste de validation où qu'on soit dans une feuille, même en [XFD1000000]...

Là, il faut faire une petite gymnastique :

  • sur un changement de valeur, reconnaître l'adresse de la cellule-validation ;
  • pour permettre un changement de valeur dans une autre cellule que la cellule-validation ;
  • pour nettoyer la cellule-validation si un changement survient dans une autre cellule que celle-là suite à un changement d'avis de l'utilisateur.

Bref, l'idée d'une cellule fixe réduisait cette gymnastique à rien du tout.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
'
Dim sItem$
'
Cancel = True
Application.EnableEvents = False
'
With Sh
    If Target = "" Then
        Target.Validation.Delete
        [AAB1] = Target.Address
        For x = 1 To Sheets.Count
            .Range("AAA" & x).Value = Sheets(x).Name
        Next
    End If
    sItem = Sh.Name
    Target.Validation.Add Type:=xlValidateList, Formula1:="=" & sItem & "!AAA1:AAA" & x
End With
'
Application.EnableEvents = True
'
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'
Dim sItem$
'
Application.EnableEvents = False
'
With Sh
    If [AAB1] <> "" Then
        If Not Intersect(Target, .Range([AAB1])) Is Nothing Then
            sItem = Target
            Target = ""
        End If
        .Range([AAB1]).Validation.Delete
        .Range("AAA:AAA").Value = ""
        .[AAB1] = ""
        If sItem <> "" Then Worksheets(sItem).Activate
    End If
End With
'
Application.EnableEvents = True
'
End Sub

A+

Rechercher des sujets similaires à "possibilite visualiser liste noms onglets"