XL 2019 Faire évoluer un navigation entre feuilles

AIXELS

XLDnaute Occasionnel
Supporter XLD
Bonjour à tous les Amis du Forum. :)
J'ai trouvé un navigateur entre feuilles assez pratique quand
a plusieurs dizaines de feuilles pour se rendre rapidement sur
la feuille de son choix. Il fonctionne très très bien.
Le code est très abouti et dépasse mes connaissances en VBA
Quelqu'un peut-il le faire évoluer pour :
  • Qu'il reste affiché lors de la navigation
  • Ne pas avoir à appuyer sur OK pour se rendre sur la feuille choisie
  • Et pouvoir le fermer quand on le désire.
Je vous joins le fichier, code diffusé par René Roy, mpfe

Merci pour votre aide.
Bien cordialement.
 

Pièces jointes

  • Naviguer.xlsm
    35.3 KB · Affichages: 13

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Et la fonctionnalité d'origine ne suffit-elle pas ?
1667738536598.png
 

chris

XLDnaute Barbatruc
Bonjour

Ayant vainement attendu que Microsoft satisfasse un de mes désirs, j'ai dans le clic droit de n'importe quelle cellule l'affichage de la liste des onglets classée par ordre alpha et nom par ordre dans le classeur.
1 clic droit affiche le menu, 1 clic la liste, 1clic sélectionne et active l'onglet

Si cela intéresse, je donnerai le code du personnal.xlsb
 

chris

XLDnaute Barbatruc
Bonjour

Dans le module ThisWorkBook du classeur de macros personnel (ou un complément)

VB:
Private Sub Workbook_Open()
    With Application
       
        'Liste onglets en clic droit
        With .CommandBars("Cell").Controls.Add(msoControlButton)
            .Caption = "Liste onglets"
            .BeginGroup = True
            .OnAction = "ListOnglets" 'ListeOnglets en clic droit
        End With
       
    End With
End Sub

Dans un module standard
Code:
Public Longlet
Sub ListOnglets()
'Lister les onglets avec dictionnaire

ReDim Longlet(ActiveWorkbook.Worksheets.Count - 1)
For I = 0 To UBound(Longlet)
    Longlet(I) = ActiveWorkbook.Worksheets(I + 1).Name
Next I
Call Tri(Longlet, LBound(Longlet), UBound(Longlet)) ' voir module mod_tri
MesOnglets2 (Longlet)
End Sub
Sub Tri(a, gauc, droi)   ' Quick sort

 ref = a((gauc + droi) \ 2)
 g = gauc: d = droi
 Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      g = g + 1: d = d - 1
    End If
 Loop While g <= d
 If g < droi Then Call Tri(a, g, droi)
 If gauc < d Then Call Tri(a, gauc, d)
 
 End Sub

Sub MesOnglets2(Longlet)
    x = UBound(Longlet)
    With UMesOnglets
    .ListeO.List() = Longlet
    .Height = Application.Min(300, x * 13 + 40)
    .ListeO.Height = .Height - 22
    .Show
    End With
End Sub

UserForm à importer
 

Pièces jointes

  • UMesOnglets.zip
    1 005 bytes · Affichages: 4
Dernière édition:

AIXELS

XLDnaute Occasionnel
Supporter XLD
Bonjour @chris et tous les amis du Forum.
Merci pour ton retour.
J'ai un message d'erreur qui s'affiche d'une part
et d'autre part, je ne m'attendais pas à un userform pour
afficher les onglets. Je pensais que ce serait une fonction
ou une macro dans l'esprit du fichier joint lors de mon premier envoi.
J'ai trouvé un navigateur entre feuilles assez pratique quand
a plusieurs dizaines de feuilles pour se rendre rapidement sur
la feuille de son choix. Il fonctionne très très bien.
Le code est très abouti et dépasse mes connaissances en VBA
Quelqu'un peut-il le faire évoluer pour :
  • Qu'il reste affiché lors de la navigation
  • Ne pas avoir à appuyer sur OK pour se rendre sur la feuille choisie
  • Et pouvoir le fermer quand on le désire.
Donc côté userform, j'ai abandonné cette solution.
Je reviens à ma première requête à savoir si quelqu'un
pouvait faire évoluer le 1er fichier joint.

Par avance, merci pour aide.
Bien cordialement.
 

Pièces jointes

  • Message d'erreur2.jpg
    Message d'erreur2.jpg
    47.5 KB · Affichages: 12
  • AffichageDesOnglets.xlsm
    68.4 KB · Affichages: 1

Hasco

XLDnaute Barbatruc
Repose en paix
Je reviens à ma première requête à savoir si quelqu'un
pouvait faire évoluer le 1er fichier joint.
Bonjour,

Le type même de la boîte de dialogue créée dans votre macro ne permet pas ce que vous demandez*.
Les feuilles xlDialogSheet étaient des feuilles de dialogue xl4 qui sont devenues obsolètes avec l'apparition des userform. D'ailleurs dans les nouvelles versions d'excel on ne peut plus en ajouter par l'interface.

La seule chose que vous pouvez faire pour qu'elle se ferme sur choix, c'est de double-cliquer sur une option.

*sauf peut-être à développer (et ce n'est pas certain) une usine à gaz d'api windows que vous maîtriseriez encore moins que le vba.
 

AIXELS

XLDnaute Occasionnel
Supporter XLD
Bonjour @vgendron @chris @Hasco et tous les amis du Forum.
Le type même de la boîte de dialogue créée dans votre macro ne permet pas ce que vous demandez*.
Désolé de vous avoir fait perdre votre temps. 🙏
Le manque de maîtrise de VBA explique ma requête qui n'est pas réalisable.
En tous cas, merci à tous pour vos retours et votre contribution.
Bien cordialement.
 

Hasco

XLDnaute Barbatruc
Repose en paix

Discussions similaires

Statistiques des forums

Discussions
315 134
Messages
2 116 613
Membres
112 811
dernier inscrit
shade1452