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

liste deroulante resumant tous les onglets

  • Initiateur de la discussion Initiateur de la discussion jean luc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jean luc

Guest
Y a t'il une possibilité de créer un onglet qui possèderait une liste déroulante ayant comme référence chaque onglet de mon classeur ?

Le but est de selectionner l'onglet pour y atterir.

J'ai trop d'onglet pour pouvoir m'y retrouver !!!

Merci d'avance
 
Re,

Au lieu d'une liste de validation on peut utiliser une ComboBox :
Code:
Option Explicit
Option Compare Text 'la casse est ignorée
'---API Windows pour le fun---
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

Private Sub Worksheet_Activate()
'mise à jour pour le cas où l'on a supprimé des feuilles
Worksheet_Change [E7]
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E7,E9,E11,E13]) Is Nothing Then Exit Sub
Dim a, b$(), mem#(), i%, w As Worksheet, c As Range
Target.Select
a = Array("*" & [E7] & "*", [E9], [E11], [E13]) 'adaptable
ReDim b(UBound(a)): ReDim mem(UBound(a))
For i = 1 To UBound(a): mem(i) = 9 ^ 9: Next
For Each w In Worksheets
  If a(0) <> "**" And w.[C6] Like a(0) Then b(0) = b(0) & Chr(1) & w.Name
  For i = 1 To UBound(a)
    Set c = w.Range("C" & i + 6)
    If a(i) <> "" And c <> "" And Abs(c - a(i)) < mem(i) Then mem(i) = Abs(c - a(i)): b(i) = w.Name
  Next
Next
'---restitutions---
ComboBox1 = "": ComboBox1.Clear 'RAZ
If b(0) <> "" Then ComboBox1.List = Split(Mid(b(0), 2), Chr(1)) 'charge la liste
[F9] = b(1): [F11] = b(2): [F13] = b(3)
End Sub

Private Sub Combobox1_Change()
[E7].Activate
If ComboBox1.ListIndex = -1 Then
  ComboBox1 = ""
  SetCursorPos 100, 350 'pour le fun, le déplacement du pointeur fait apparaître la couleur jaune
Else
  Application.Goto Sheets(ComboBox1.Text).[C6]
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(ActiveCell, [F9,F11,F13]) Is Nothing Or ActiveCell = "" Then Exit Sub
With ActiveCell
  .Offset(, -1).Select
  Application.Goto Sheets(.Value).Cells(7 + (.Row - 9) / 2, 3)
End With
End Sub
Il peut maintenant y avoir des virgules dans les noms des feuilles.

Pour le fun j'utilise une API Windows pour déplacer le pointeur de la souris.

La liste de la ComboBox est chargée à l'ouverture par la Workbook_Open.

A+
 

Pièces jointes

Bonjour à tous
j'avais besoin d'une liste déroulante permettant d'accéder aux onglets d'un classeur
j'ai trouvé sur le web un module qui correspond presque à ce que je souhaite
je voudrai le modifier de façon a ce qu'il ne sélectionne que les onglets à partir d'un onglet de référence(par ex menu) qq à t il une solution ? merci d'avance
voici le module en question

Private Sub ComboBox1_Change()
'Updateby Extendoffice
If ComboBox1.ListIndex > -1 Then Sheets(ComboBox1.Text).Select
End Sub
Private Sub ComboBox1_DropButtonClick()
Dim xSheet As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
If ComboBox1.ListCount <> ThisWorkbook.Sheets.Count Then
ComboBox1.Clear
For Each xSheet In ThisWorkbook.Sheets
ComboBox1.AddItem xSheet.Name
Next xSheet
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub

Private Sub ComboBox1_GotFocus()
If ComboBox1.ListCount <> 0 Then ComboBox1.DropDown
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

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