Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 

AIXELS

XLDnaute Occasionnel
Supporter XLD
Bonjour @vgendron @Hasco @chris
Merci pour vos réponses respectives.
J'avais l'exemple du userform que je vous fait partager
j'opterai pour ta solution @chris
Si tu peux envoyer ton code, je suis preneur.
Avec l'explications et procédure pour le faire fonctionner.
Bien cordialement.
 

Pièces jointes

  • AFFICHAGE VIA USF.xlsm
    51.8 KB · Affichages: 1
Dernière édition:

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.
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
    47.5 KB · Affichages: 12
  • AffichageDesOnglets.xlsm
    68.4 KB · Affichages: 1

chris

XLDnaute Barbatruc
RE

Il manque juste la déclaration de variable (je l'ai ajoutée)

Le userform n'affiche que la liste qui ne peut être affichée dans des cellules mais tu fais comme tu veux...
 
Dernière édition:

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.
 

Hasco

XLDnaute Barbatruc
Repose en paix

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…